diff --git a/.gn b/.gn
index b3135a8..ea4140b 100644
--- a/.gn
+++ b/.gn
@@ -78,7 +78,6 @@
   "//chrome/browser/updates/announcement_notification:*",  # 15 errors
   "//chrome/browser/updates/internal:*",  # 8 errors
   "//chrome/browser/updates:*",  # 21 errors
-  "//chrome/install_static:*",  # 4 errors
   "//chrome/notification_helper:*",  # 4 errors
   "//chrome/services/cups_proxy/public/cpp:*",  # 2 errors
   "//chrome/services/cups_proxy:*",  # 6 errors
@@ -133,7 +132,6 @@
   "//extensions/browser/api/system_info:*",  # 8 errors
   "//extensions/browser/api/system_memory:*",  # 1 error
   "//extensions/browser/api/system_network:*",  # 2 errors
-  "//extensions/browser/api/system_power_source:*",  # 2 errors
   "//extensions/browser/api/system_storage:*",  # 6 errors
   "//extensions/browser/api/test:*",  # 1 error
   "//extensions/browser/api/usb:*",  # 12 errors
diff --git a/DEPS b/DEPS
index 73abc78..84dec7d 100644
--- a/DEPS
+++ b/DEPS
@@ -199,11 +199,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': 'caca7bfff996b38ee6bb6413eb5ca62b0c9a380f',
+  'skia_revision': '9a27566e0cbcf073d9de5930bcda5a5fd8779e6b',
   # 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': 'c1afed6d5ce09f38a9eb7f39b34b4c087cd80503',
+  'v8_revision': 'a29c88f51455adc968183aaddadaaac75965b421',
   # 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.
@@ -211,7 +211,7 @@
   # 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': '5e606e5bfce2b23c139c5289cbf1299844fa4b43',
+  'angle_revision': 'bc06d145bb29926b2d8cd51c04c7c002a01f6db5',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling SwiftShader
   # and whatever else without interference from each other.
@@ -274,7 +274,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling devtools-frontend
   # and whatever else without interference from each other.
-  'devtools_frontend_revision': '8793dbe78e44bc6eeceaed0cc8cf0e542d6efd4a',
+  'devtools_frontend_revision': 'a82fd978806685fca50a1b73a5987388b1e5d93d',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling libprotobuf-mutator
   # and whatever else without interference from each other.
@@ -364,7 +364,7 @@
   # revisions.
 
   # GN CIPD package version.
-  'gn_version': 'git_revision:53d92014bf94c3893886470a1c7c1289f8818db0',
+  'gn_version': 'git_revision:0d67e272bdb8145f87d238bc0b2cb8bf80ccec90',
 
   # Also, if you change these, update buildtools/DEPS too. Also update the
   # libc++ svn_revision in //buildtools/deps_revisions.gni.
@@ -1514,7 +1514,7 @@
     Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + '3c2fe3888658d82b47ca831d59a2e07579619c2d',
 
   'src/third_party/webrtc':
-    Var('webrtc_git') + '/src.git' + '@' + 'a45df0b3491ea72cfcf40e21106eb046c8594223',
+    Var('webrtc_git') + '/src.git' + '@' + 'b90546580ec3e8236225f39f9e5e5e7b7128c24b',
 
   'src/third_party/libgifcodec':
      Var('skia_git') + '/libgifcodec' + '@'+  Var('libgifcodec_revision'),
@@ -1586,7 +1586,7 @@
     Var('chromium_git') + '/v8/v8.git' + '@' +  Var('v8_revision'),
 
   'src-internal': {
-    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@3a0cc86fe501ebb245b7d6191903579a2a7c40fe',
+    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@07ae7a3efa65fac8623671bb0c2b29c979bb8239',
     'condition': 'checkout_src_internal',
   },
 
@@ -1594,7 +1594,7 @@
     'packages': [
       {
         'package': 'chromeos_internal/apps/help_app/app',
-        'version': 'qJhtBw7ouc--Fdht1yXy9-ZDPYguiqAZbixcf8MasiwC',
+        'version': 'nmFhO5_ZTTtPNJGhEylXtJ4sG_lvSsW7CgsI4mn7xzoC',
       },
     ],
     'condition': 'checkout_chromeos and checkout_src_internal',
@@ -1605,7 +1605,7 @@
     'packages': [
       {
         'package': 'chromeos_internal/apps/media_app/app',
-        'version': 'RYs0dVeLJjwsPik_WXMr4pMuzN55DAmi4gfQCMX-evUC',
+        'version': 'y1UO1pWZtkbXGMrkLWW6WfXo6r0vs_UNcESClmGZ_bYC',
       },
     ],
     'condition': 'checkout_chromeos and checkout_src_internal',
diff --git a/ash/system/ime_menu/ime_menu_tray.cc b/ash/system/ime_menu/ime_menu_tray.cc
index 1598b5fb..ce2dd8de 100644
--- a/ash/system/ime_menu/ime_menu_tray.cc
+++ b/ash/system/ime_menu/ime_menu_tray.cc
@@ -45,6 +45,7 @@
 #include "ui/views/controls/scroll_view.h"
 #include "ui/views/controls/separator.h"
 #include "ui/views/layout/box_layout.h"
+#include "ui/views/layout/box_layout_view.h"
 #include "ui/views/metadata/metadata_impl_macros.h"
 
 namespace ash {
@@ -118,7 +119,7 @@
 END_METADATA
 
 // The view that contains IME menu title.
-class ImeTitleView : public views::View {
+class ImeTitleView : public views::BoxLayoutView {
  public:
   METADATA_HEADER(ImeTitleView);
   ImeTitleView() {
@@ -129,10 +130,10 @@
             color_provider->GetContentLayerColor(
                 AshColorProvider::ContentLayerType::kSeparatorColor)),
         gfx::Insets(kMenuSeparatorVerticalPadding - kMenuSeparatorWidth, 0)));
-    auto box_layout = std::make_unique<views::BoxLayout>(
-        views::BoxLayout::Orientation::kHorizontal, kTitleViewPadding);
-    box_layout->set_minimum_cross_axis_size(kTrayPopupItemMinHeight);
-    views::BoxLayout* layout_ptr = SetLayoutManager(std::move(box_layout));
+    SetOrientation(views::BoxLayout::Orientation::kHorizontal);
+    SetInsideBorderInsets(kTitleViewPadding);
+    SetMinimumCrossAxisSize(kTrayPopupItemMinHeight);
+
     auto* title_label = AddChildView(std::make_unique<views::Label>(
         l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_IME)));
     title_label->SetBorder(
@@ -142,7 +143,7 @@
         AshColorProvider::ContentLayerType::kTextColorPrimary));
     TrayPopupUtils::SetLabelFontList(title_label,
                                      TrayPopupUtils::FontStyle::kPodMenuHeader);
-    layout_ptr->SetFlexForView(title_label, 1);
+    SetFlexForView(title_label, 1);
 
     settings_button_ = AddChildView(std::make_unique<TopShortcutButton>(
         base::BindRepeating([]() {
@@ -162,7 +163,7 @@
   TopShortcutButton* settings_button_ = nullptr;
 };
 
-BEGIN_METADATA(ImeTitleView, views::View)
+BEGIN_METADATA(ImeTitleView, views::BoxLayoutView)
 END_METADATA
 
 // The view that contains buttons shown on the bottom of IME menu.
diff --git a/build/android/apk_operations.py b/build/android/apk_operations.py
index d2798147..b2d4176 100755
--- a/build/android/apk_operations.py
+++ b/build/android/apk_operations.py
@@ -484,6 +484,10 @@
     awful_wrapping = r'\s*'.join('compilation_filter=')
     for m in re.finditer(awful_wrapping + r'([\s\S]+?)[\],]', package_output):
       compilation_filters.add(re.sub(r'\s+', '', m.group(1)))
+    # Starting Android Q, output looks like:
+    #  arm: [status=speed-profile] [reason=install]
+    for m in re.finditer(r'\[status=(.+?)\]', package_output):
+      compilation_filters.add(m.group(1))
     compilation_filter = ','.join(sorted(compilation_filters))
 
     data_dir_sizes = _DuHelper(d, '%s/{*,.*}' % data_dir, run_as=package_name)
diff --git a/build/fuchsia/linux.sdk.sha1 b/build/fuchsia/linux.sdk.sha1
index 6966cd4..e5ec4360 100644
--- a/build/fuchsia/linux.sdk.sha1
+++ b/build/fuchsia/linux.sdk.sha1
@@ -1 +1 @@
-0.20201225.3.1
+0.20201228.0.1
diff --git a/build/fuchsia/mac.sdk.sha1 b/build/fuchsia/mac.sdk.sha1
index 6966cd4..e5ec4360 100644
--- a/build/fuchsia/mac.sdk.sha1
+++ b/build/fuchsia/mac.sdk.sha1
@@ -1 +1 @@
-0.20201225.3.1
+0.20201228.0.1
diff --git a/buildtools/DEPS b/buildtools/DEPS
index 563d8d24..56de1b6 100644
--- a/buildtools/DEPS
+++ b/buildtools/DEPS
@@ -14,7 +14,7 @@
   #
 
   # GN CIPD package version.
-  'gn_version': 'git_revision:53d92014bf94c3893886470a1c7c1289f8818db0',
+  'gn_version': 'git_revision:0d67e272bdb8145f87d238bc0b2cb8bf80ccec90',
 
   # By default, do not checkout the re-client binaries.
   'checkout_reclient': False,
diff --git a/chrome/VERSION b/chrome/VERSION
index 15fb5e2..6d77bc5 100644
--- a/chrome/VERSION
+++ b/chrome/VERSION
@@ -1,4 +1,4 @@
 MAJOR=89
 MINOR=0
-BUILD=4369
+BUILD=4371
 PATCH=0
diff --git a/chrome/android/chrome_test_java_sources.gni b/chrome/android/chrome_test_java_sources.gni
index f91b3f51..5b4486c 100644
--- a/chrome/android/chrome_test_java_sources.gni
+++ b/chrome/android/chrome_test_java_sources.gni
@@ -505,7 +505,6 @@
   "javatests/src/org/chromium/chrome/browser/signin/DummyAccountPickerTargetFragment.java",
   "javatests/src/org/chromium/chrome/browser/signin/IdentityManagerIntegrationTest.java",
   "javatests/src/org/chromium/chrome/browser/signin/SigninFragmentTest.java",
-  "javatests/src/org/chromium/chrome/browser/signin/SigninHelperTest.java",
   "javatests/src/org/chromium/chrome/browser/signin/SigninSignoutIntegrationTest.java",
   "javatests/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsClientTest.java",
   "javatests/src/org/chromium/chrome/browser/site_settings/CookieControlsBridgeTest.java",
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/signin/AccountPickerBottomSheetTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/signin/AccountPickerBottomSheetTest.java
index b2a01ef0..4c71ba17 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/signin/AccountPickerBottomSheetTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/signin/AccountPickerBottomSheetTest.java
@@ -363,10 +363,8 @@
         buildAndShowExpandedBottomSheet();
         String newFullName = "New Full Name1";
         String newGivenName = "New Given Name1";
-        TestThreadUtils.runOnUiThreadBlocking(() -> {
-            mFakeProfileDataSource.addProfileData(new ProfileDataSource.ProfileData(
-                    PROFILE_DATA1.getAccountEmail(), null, newFullName, newGivenName));
-        });
+        mFakeProfileDataSource.addProfileData(new ProfileDataSource.ProfileData(
+                PROFILE_DATA1.getAccountEmail(), null, newFullName, newGivenName));
         onVisibleView(withText(PROFILE_DATA1.getAccountEmail())).check(matches(isDisplayed()));
         onVisibleView(withText(newFullName)).check(matches(isDisplayed()));
         // Check that profile data update when the bottom sheet is expanded won't
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/signin/account_picker/AccountPickerMediatorTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/signin/account_picker/AccountPickerMediatorTest.java
index 61a36ccb..8632df32 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/signin/account_picker/AccountPickerMediatorTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/signin/account_picker/AccountPickerMediatorTest.java
@@ -28,7 +28,6 @@
 import org.chromium.chrome.test.util.browser.signin.AccountManagerTestRule;
 import org.chromium.components.signin.ProfileDataSource;
 import org.chromium.components.signin.test.util.FakeProfileDataSource;
-import org.chromium.content_public.browser.test.util.TestThreadUtils;
 import org.chromium.ui.modelutil.MVCListAdapter;
 import org.chromium.ui.modelutil.PropertyModel;
 
@@ -129,10 +128,8 @@
         mMediator = new AccountPickerMediator(
                 RuntimeEnvironment.application, mModelList, mListenerMock, ACCOUNT_NAME1, false);
         String fullName2 = "Full Name2";
-        TestThreadUtils.runOnUiThreadBlocking(() -> {
-            mFakeProfileDataSource.addProfileData(
-                    new ProfileDataSource.ProfileData(ACCOUNT_NAME2, null, fullName2, null));
-        });
+        mFakeProfileDataSource.addProfileData(
+                new ProfileDataSource.ProfileData(ACCOUNT_NAME2, null, fullName2, null));
         // ACCOUNT_NAME1, ACCOUNT_NAME2, ADD_ACCOUNT
         Assert.assertEquals(3, mModelList.size());
         checkItemForExistingAccountRow(0, ACCOUNT_NAME1, FULL_NAME1, /* isSelectedAccount= */ true);
diff --git a/chrome/browser/chromeos/accessibility/select_to_speak_browsertest.cc b/chrome/browser/chromeos/accessibility/select_to_speak_browsertest.cc
index 0369e7f..72d51b0 100644
--- a/chrome/browser/chromeos/accessibility/select_to_speak_browsertest.cc
+++ b/chrome/browser/chromeos/accessibility/select_to_speak_browsertest.cc
@@ -17,7 +17,6 @@
 #include "base/bind.h"
 #include "base/command_line.h"
 #include "base/memory/weak_ptr.h"
-#include "build/branding_buildflags.h"
 #include "chrome/browser/chromeos/accessibility/accessibility_manager.h"
 #include "chrome/browser/chromeos/accessibility/speech_monitor.h"
 #include "chrome/browser/profiles/profile.h"
@@ -163,13 +162,7 @@
   }
 };
 
-// The status tray is not active on official builds.
-#if BUILDFLAG(GOOGLE_CHROME_BRANDING)
-#define MAYBE_SpeakStatusTray DISABLED_SpeakStatusTray
-#else
-#define MAYBE_SpeakStatusTray SpeakStatusTray
-#endif
-IN_PROC_BROWSER_TEST_F(SelectToSpeakTest, MAYBE_SpeakStatusTray) {
+IN_PROC_BROWSER_TEST_F(SelectToSpeakTest, DISABLED_SpeakStatusTray) {
   gfx::Rect tray_bounds = ash::Shell::Get()
                               ->GetPrimaryRootWindowController()
                               ->GetStatusAreaWidget()
diff --git a/chrome/browser/chromeos/login/login_browsertest.cc b/chrome/browser/chromeos/login/login_browsertest.cc
index 1b37b6e6..6858ae6 100644
--- a/chrome/browser/chromeos/login/login_browsertest.cc
+++ b/chrome/browser/chromeos/login/login_browsertest.cc
@@ -20,6 +20,7 @@
 #include "chrome/browser/chromeos/login/test/fake_gaia_mixin.h"
 #include "chrome/browser/chromeos/login/test/guest_session_mixin.h"
 #include "chrome/browser/chromeos/login/test/login_manager_mixin.h"
+#include "chrome/browser/chromeos/login/test/network_portal_detector_mixin.h"
 #include "chrome/browser/chromeos/login/test/offline_login_test_mixin.h"
 #include "chrome/browser/chromeos/login/test/oobe_base_test.h"
 #include "chrome/browser/chromeos/login/test/oobe_screen_waiter.h"
@@ -88,6 +89,7 @@
   // We need Fake gaia to avoid network errors that can be caused by
   // attempts to load real GAIA.
   FakeGaiaMixin fake_gaia_{&mixin_host_, embedded_test_server()};
+  NetworkPortalDetectorMixin network_portal_detector_{&mixin_host_};
 };
 
 class LoginOfflineManagedTest : public LoginManagerTest {
@@ -211,6 +213,8 @@
 }
 
 IN_PROC_BROWSER_TEST_F(LoginOfflineTest, AuthOffline) {
+  network_portal_detector_.SimulateDefaultNetworkState(
+      NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_OFFLINE);
   offline_login_test_mixin_.GoOffline();
   offline_login_test_mixin_.InitOfflineLogin(test_account_id_,
                                              LoginManagerTest::kPassword);
diff --git a/chrome/browser/chromeos/login/screens/welcome_screen_browsertest.cc b/chrome/browser/chromeos/login/screens/welcome_screen_browsertest.cc
index 47da418..aff72f6 100644
--- a/chrome/browser/chromeos/login/screens/welcome_screen_browsertest.cc
+++ b/chrome/browser/chromeos/login/screens/welcome_screen_browsertest.cc
@@ -718,7 +718,8 @@
 
 // Assert that the ChromeVox hint dialog behaves as a modal dialog and traps
 // focus when using tab.
-IN_PROC_BROWSER_TEST_F(WelcomeScreenChromeVoxHintTest, TrapFocus) {
+// TODO(crbug/1161398): The test is flaky.
+IN_PROC_BROWSER_TEST_F(WelcomeScreenChromeVoxHintTest, DISABLED_TrapFocus) {
   WelcomeScreen* screen = welcome_screen();
   OobeScreenWaiter(WelcomeView::kScreenId).Wait();
   TtsExtensionEngine::GetInstance()->DisableBuiltInTTSEngineForTesting();
diff --git a/chrome/browser/chromeos/policy/dlp/OWNERS b/chrome/browser/chromeos/policy/dlp/OWNERS
index 1725fcc7..bb766c68 100644
--- a/chrome/browser/chromeos/policy/dlp/OWNERS
+++ b/chrome/browser/chromeos/policy/dlp/OWNERS
@@ -1,3 +1,2 @@
 ayaelattar@chromium.org
-nikitapodguzov@chromium.org
 poromov@chromium.org
diff --git a/chrome/browser/focus_ring_browsertest.cc b/chrome/browser/focus_ring_browsertest.cc
index 254711de..c206ddd 100644
--- a/chrome/browser/focus_ring_browsertest.cc
+++ b/chrome/browser/focus_ring_browsertest.cc
@@ -8,7 +8,6 @@
 #include "build/build_config.h"
 #include "build/chromeos_buildflags.h"
 #include "cc/test/pixel_comparator.h"
-#include "chrome/browser/focus_ring_browsertest_mac.h"
 #include "chrome/browser/ui/browser.h"
 #include "chrome/common/chrome_paths.h"
 #include "chrome/test/base/in_process_browser_test.h"
@@ -18,7 +17,6 @@
 #include "content/public/test/browser_test.h"
 #include "content/public/test/browser_test_utils.h"
 #include "ui/base/ui_base_features.h"
-#include "ui/base/ui_base_switches.h"
 
 // TODO(crbug.com/958242): Move the baselines to skia gold for easier
 //   rebaselining when all platforms are supported
@@ -55,9 +53,7 @@
 class FocusRingBrowserTest : public InProcessBrowserTest {
  public:
   FocusRingBrowserTest() {
-    feature_list_.InitWithFeatures(
-        {features::kFormControlsRefresh, features::kCSSColorSchemeUARendering},
-        {});
+    feature_list_.InitWithFeatures({features::kFormControlsRefresh}, {});
   }
 
   void SetUp() override {
@@ -71,9 +67,6 @@
     // The --disable-lcd-text flag helps text render more similarly on
     // different bots and platform.
     command_line->AppendSwitch(switches::kDisableLCDText);
-
-    // This is required to allow dark mode to be used on some platforms.
-    command_line->AppendSwitch(switches::kForceDarkMode);
   }
 
   void RunTest(const std::string& screenshot_filename,
@@ -84,7 +77,6 @@
     base::ScopedAllowBlockingForTesting allow_blocking;
 
     ASSERT_TRUE(features::IsFormControlsRefreshEnabled());
-    ASSERT_TRUE(features::IsCSSColorSchemeUARenderingEnabled());
 
     base::FilePath dir_test_data;
     ASSERT_TRUE(base::PathService::Get(chrome::DIR_TEST_DATA, &dir_test_data));
@@ -111,7 +103,8 @@
     content::WebContents* web_contents =
         browser()->tab_strip_model()->GetActiveWebContents();
     ASSERT_TRUE(content::NavigateToURL(
-        web_contents, GURL("data:text/html,<!DOCTYPE html>" + body_html)));
+        web_contents,
+        GURL("data:text/html,<!DOCTYPE html><body>" + body_html + "</body>")));
     ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser()));
 
     EXPECT_TRUE(CompareWebContentsOutputToReference(
@@ -181,21 +174,3 @@
           /* screenshot_width */ 90,
           /* screenshot_height */ 130, comparator);
 }
-
-IN_PROC_BROWSER_TEST_F(FocusRingBrowserTest, DarkModeButton) {
-#if defined(OS_MAC)
-  if (!MacOSVersionSupportsDarkMode())
-    return;
-  cc::FuzzyPixelComparator comparator = mac_strict_comparator;
-#else
-  cc::ExactPixelComparator comparator(/*discard_alpha=*/true);
-#endif
-  RunTest("focus_ring_browsertest_dark_mode_button",
-          "<meta name=\"color-scheme\" content=\"light dark\">"
-          "<button autofocus style=\"width:40px;height:20px;\"></button>"
-          "<br>"
-          "<br>"
-          "<button style=\"width:40px;height:20px;\"></button>",
-          /* screenshot_width */ 80,
-          /* screenshot_height */ 80, comparator);
-}
diff --git a/chrome/browser/focus_ring_browsertest_mac.h b/chrome/browser/focus_ring_browsertest_mac.h
deleted file mode 100644
index 64cef70c..0000000
--- a/chrome/browser/focus_ring_browsertest_mac.h
+++ /dev/null
@@ -1,10 +0,0 @@
-// 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.
-
-#ifndef CHROME_BROWSER_FOCUS_RING_BROWSERTEST_MAC_H_
-#define CHROME_BROWSER_FOCUS_RING_BROWSERTEST_MAC_H_
-
-bool MacOSVersionSupportsDarkMode();
-
-#endif  // CHROME_BROWSER_FOCUS_RING_BROWSERTEST_MAC_H_
diff --git a/chrome/browser/focus_ring_browsertest_mac.mm b/chrome/browser/focus_ring_browsertest_mac.mm
deleted file mode 100644
index 1dc0f43..0000000
--- a/chrome/browser/focus_ring_browsertest_mac.mm
+++ /dev/null
@@ -1,11 +0,0 @@
-// 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.
-
-#include "chrome/browser/focus_ring_browsertest_mac.h"
-
-bool MacOSVersionSupportsDarkMode() {
-  if (@available(macOS 10.14, *))
-    return true;
-  return false;
-}
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/injected/api.js b/chrome/browser/resources/chromeos/accessibility/chromevox/injected/api.js
index afe235b..1ad49161 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/injected/api.js
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/injected/api.js
@@ -92,7 +92,8 @@
     } catch (e) {
     }
   };
-  window.postMessage(PORT_SETUP_MSG, '*', [channel.port2]);
+  window.postMessage(
+      PORT_SETUP_MSG, '*' /* target origin */, [channel.port2] /* transfer */);
 }
 
 /**
diff --git a/chrome/browser/signin/services/android/BUILD.gn b/chrome/browser/signin/services/android/BUILD.gn
index 06003623..1ce9456 100644
--- a/chrome/browser/signin/services/android/BUILD.gn
+++ b/chrome/browser/signin/services/android/BUILD.gn
@@ -81,6 +81,7 @@
   bypass_platform_checks = true
   testonly = true
   sources = [
+    "junit/src/org/chromium/chrome/browser/signin/services/SigninHelperTest.java",
     "junit/src/org/chromium/chrome/browser/signin/services/SigninPreferencesManagerTest.java",
     "junit/src/org/chromium/chrome/browser/signin/services/WebSigninBridgeTest.java",
   ]
@@ -89,6 +90,7 @@
     "//base:base_java_test_support",
     "//base:base_junit_test_support",
     "//chrome/browser/profiles/android:java",
+    "//chrome/test/android:chrome_java_test_support",
     "//components/signin/public/android:java",
     "//third_party/junit",
     "//third_party/mockito:mockito_java",
diff --git a/chrome/browser/signin/services/android/java/src/org/chromium/chrome/browser/signin/services/ProfileDataCacheRenderTest.java b/chrome/browser/signin/services/android/java/src/org/chromium/chrome/browser/signin/services/ProfileDataCacheRenderTest.java
index f4d4e95..cb831d1 100644
--- a/chrome/browser/signin/services/android/java/src/org/chromium/chrome/browser/signin/services/ProfileDataCacheRenderTest.java
+++ b/chrome/browser/signin/services/android/java/src/org/chromium/chrome/browser/signin/services/ProfileDataCacheRenderTest.java
@@ -141,10 +141,8 @@
                 .thenReturn(new AccountInfo(
                         new CoreAccountId("gaia-id-test"), accountEmail, "gaia-id-test", null));
 
-        TestThreadUtils.runOnUiThreadBlocking(() -> {
-            mProfileDataSource.addProfileData(new ProfileDataSource.ProfileData(
-                    accountEmail, null, "Full Name", "Given Name"));
-        });
+        mProfileDataSource.addProfileData(
+                new ProfileDataSource.ProfileData(accountEmail, null, "Full Name", "Given Name"));
         mIdentityManager.onExtendedAccountInfoUpdated(new AccountInfo(
                 new CoreAccountId("gaia-id-test"), accountEmail, "gaia-id-test", createAvatar()));
         TestThreadUtils.runOnUiThreadBlocking(() -> { checkImageIsScaled(accountEmail); });
@@ -165,14 +163,13 @@
     @MediumTest
     @Feature("RenderTest")
     public void testAvatarIsScaled() throws IOException {
+        String accountName = "test@example.com";
+        ProfileDataSource.ProfileData profileData = new ProfileDataSource.ProfileData(
+                accountName, createAvatar(), "Full Name", "Given Name");
+        mProfileDataSource.addProfileData(profileData);
         TestThreadUtils.runOnUiThreadBlocking(() -> {
-            String accountName = "test@example.com";
-            ProfileDataSource.ProfileData profileData = new ProfileDataSource.ProfileData(
-                    accountName, createAvatar(), "Full Name", "Given Name");
-            mProfileDataSource.addProfileData(profileData);
             checkImageIsScaled(accountName);
         });
-
         mRenderTestRule.render(mImageView, "profile_data_cache_avatar" + mImageSize);
     }
 
diff --git a/chrome/browser/signin/services/android/java/src/org/chromium/chrome/browser/signin/services/SigninHelper.java b/chrome/browser/signin/services/android/java/src/org/chromium/chrome/browser/signin/services/SigninHelper.java
index 7c137827..5309344 100644
--- a/chrome/browser/signin/services/android/java/src/org/chromium/chrome/browser/signin/services/SigninHelper.java
+++ b/chrome/browser/signin/services/android/java/src/org/chromium/chrome/browser/signin/services/SigninHelper.java
@@ -66,9 +66,7 @@
                     }
                 }
                 return result;
-            } catch (IOException e) {
-                Log.w(TAG, "Failed to get change events", e);
-            } catch (GoogleAuthException e) {
+            } catch (IOException | GoogleAuthException e) {
                 Log.w(TAG, "Failed to get change events", e);
             }
             return new ArrayList<>(0);
@@ -113,27 +111,29 @@
             return;
         }
 
-        Account syncAccount = CoreAccountInfo.getAndroidAccountFrom(
-                mSigninManager.getIdentityManager().getPrimaryAccountInfo(ConsentLevel.SYNC));
+        final CoreAccountInfo syncAccount =
+                mSigninManager.getIdentityManager().getPrimaryAccountInfo(ConsentLevel.SYNC);
         if (syncAccount == null) {
             return;
         }
 
         String renamedAccount = mPrefsManager.getNewSignedInAccountName();
         if (accountsChanged && renamedAccount != null) {
-            handleAccountRename(syncAccount.name, renamedAccount);
+            handleAccountRename(syncAccount.getEmail(), renamedAccount);
             return;
         }
 
+        final List<Account> accounts =
+                AccountManagerFacadeProvider.getInstance().tryGetGoogleAccounts();
         // Always check for account deleted.
-        if (!accountExists(syncAccount)) {
+        if (AccountUtils.findAccountByName(accounts, syncAccount.getEmail()) == null) {
             // It is possible that Chrome got to this point without account
             // rename notification. Let us signout before doing a rename.
             AsyncTask<Void> task = new AsyncTask<Void>() {
                 @Override
                 protected Void doInBackground() {
                     updateAccountRenameData(
-                            new SystemAccountChangeEventChecker(), syncAccount.name);
+                            new SystemAccountChangeEventChecker(), syncAccount.getEmail());
                     return null;
                 }
 
@@ -199,17 +199,6 @@
                 });
     }
 
-    private static boolean accountExists(Account account) {
-        List<Account> accounts = AccountManagerFacadeProvider.getInstance().tryGetGoogleAccounts();
-        for (int i = 0; i < accounts.size(); i++) {
-            Account a = accounts.get(i);
-            if (a.equals(account)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
     @VisibleForTesting
     public static void updateAccountRenameData(
             AccountChangeEventChecker checker, String currentName) {
@@ -225,15 +214,16 @@
         try {
         outerLoop:
             while (true) {
+                final List<Account> accounts =
+                        AccountManagerFacadeProvider.getInstance().tryGetGoogleAccounts();
                 List<String> nameChanges = checker.getAccountChangeEvents(
                         ContextUtils.getApplicationContext(), newIndex, newName);
-
                 for (String name : nameChanges) {
                     if (name != null) {
                         // We have found a rename event of the current account.
                         // We need to check if that account is further renamed.
                         newName = name;
-                        if (!accountExists(AccountUtils.createAccountFromName(newName))) {
+                        if (AccountUtils.findAccountByName(accounts, newName) == null) {
                             newIndex = 0; // Start from the beginning of the new account.
                             continue outerLoop;
                         }
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/signin/SigninHelperTest.java b/chrome/browser/signin/services/android/junit/src/org/chromium/chrome/browser/signin/services/SigninHelperTest.java
similarity index 80%
rename from chrome/android/javatests/src/org/chromium/chrome/browser/signin/SigninHelperTest.java
rename to chrome/browser/signin/services/android/junit/src/org/chromium/chrome/browser/signin/services/SigninHelperTest.java
index de307bc5b..368eb57 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/signin/SigninHelperTest.java
+++ b/chrome/browser/signin/services/android/junit/src/org/chromium/chrome/browser/signin/services/SigninHelperTest.java
@@ -2,39 +2,27 @@
 // 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.signin;
-
-import androidx.test.filters.SmallTest;
+package org.chromium.chrome.browser.signin.services;
 
 import org.junit.After;
 import org.junit.Assert;
-import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
-import org.chromium.base.test.util.Batch;
-import org.chromium.chrome.browser.signin.services.SigninHelper;
-import org.chromium.chrome.browser.signin.services.SigninPreferencesManager;
-import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
+import org.chromium.base.test.BaseRobolectricTestRunner;
 import org.chromium.chrome.test.util.browser.signin.AccountManagerTestRule;
 import org.chromium.chrome.test.util.browser.signin.MockChangeEventChecker;
 
 /**
  * Instrumentation tests for {@link SigninHelper}.
  */
-@RunWith(ChromeJUnit4ClassRunner.class)
-@Batch(Batch.UNIT_TESTS)
+@RunWith(BaseRobolectricTestRunner.class)
 public class SigninHelperTest {
     @Rule
     public final AccountManagerTestRule mAccountManagerTestRule = new AccountManagerTestRule();
 
-    private MockChangeEventChecker mEventChecker;
-
-    @Before
-    public void setUp() {
-        mEventChecker = new MockChangeEventChecker();
-    }
+    private final MockChangeEventChecker mEventChecker = new MockChangeEventChecker();
 
     @After
     public void tearDown() {
@@ -42,43 +30,43 @@
     }
 
     @Test
-    @SmallTest
     public void testSimpleAccountRename() {
         mEventChecker.insertRenameEvent("A", "B");
         SigninHelper.updateAccountRenameData(mEventChecker, "A");
         Assert.assertEquals("B", getNewSignedInAccountName());
+        checkLastAccountChangedEventIndex(0);
     }
 
     @Test
-    @SmallTest
     public void testNotSignedInAccountRename() {
         mEventChecker.insertRenameEvent("B", "C");
         SigninHelper.updateAccountRenameData(mEventChecker, "A");
         Assert.assertNull(getNewSignedInAccountName());
+        checkLastAccountChangedEventIndex(0);
     }
 
     @Test
-    @SmallTest
     public void testSimpleAccountRenameTwice() {
         mEventChecker.insertRenameEvent("A", "B");
         SigninHelper.updateAccountRenameData(mEventChecker, "A");
         Assert.assertEquals("B", getNewSignedInAccountName());
+        checkLastAccountChangedEventIndex(0);
         mEventChecker.insertRenameEvent("B", "C");
         SigninHelper.updateAccountRenameData(mEventChecker, "B");
         Assert.assertEquals("C", getNewSignedInAccountName());
+        checkLastAccountChangedEventIndex(0);
     }
 
     @Test
-    @SmallTest
     public void testNotSignedInAccountRename2() {
         mEventChecker.insertRenameEvent("B", "C");
         mEventChecker.insertRenameEvent("C", "D");
         SigninHelper.updateAccountRenameData(mEventChecker, "A");
         Assert.assertNull(getNewSignedInAccountName());
+        checkLastAccountChangedEventIndex(0);
     }
 
     @Test
-    @SmallTest
     public void testChainedAccountRename2() {
         mEventChecker.insertRenameEvent("Z", "Y"); // Unrelated.
         mEventChecker.insertRenameEvent("A", "B");
@@ -87,10 +75,10 @@
         mEventChecker.insertRenameEvent("C", "D");
         SigninHelper.updateAccountRenameData(mEventChecker, "A");
         Assert.assertEquals("D", getNewSignedInAccountName());
+        checkLastAccountChangedEventIndex(0);
     }
 
     @Test
-    @SmallTest
     public void testLoopedAccountRename() {
         mEventChecker.insertRenameEvent("Z", "Y"); // Unrelated.
         mEventChecker.insertRenameEvent("A", "B");
@@ -101,9 +89,15 @@
         mAccountManagerTestRule.addAccount("D");
         SigninHelper.updateAccountRenameData(mEventChecker, "A");
         Assert.assertEquals("D", getNewSignedInAccountName());
+        checkLastAccountChangedEventIndex(1);
     }
 
     private String getNewSignedInAccountName() {
         return SigninPreferencesManager.getInstance().getNewSignedInAccountName();
     }
+
+    private void checkLastAccountChangedEventIndex(int expectedEventIndex) {
+        Assert.assertEquals(expectedEventIndex,
+                SigninPreferencesManager.getInstance().getLastAccountChangedEventIndex());
+    }
 }
diff --git a/chrome/browser/ui/webui/chromeos/login/error_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/error_screen_handler.cc
index bb367ef..e25304e 100644
--- a/chrome/browser/ui/webui/chromeos/login/error_screen_handler.cc
+++ b/chrome/browser/ui/webui/chromeos/login/error_screen_handler.cc
@@ -40,6 +40,7 @@
 
 void ErrorScreenHandler::Hide() {
   showing_ = false;
+  show_on_init_ = false;
   if (screen_)
     screen_->DoHide();
 }
diff --git a/chrome/browser/ui/webui/chromeos/multidevice_setup/multidevice_setup_dialog.cc b/chrome/browser/ui/webui/chromeos/multidevice_setup/multidevice_setup_dialog.cc
index bf9bac61..df9d873 100644
--- a/chrome/browser/ui/webui/chromeos/multidevice_setup/multidevice_setup_dialog.cc
+++ b/chrome/browser/ui/webui/chromeos/multidevice_setup/multidevice_setup_dialog.cc
@@ -47,20 +47,26 @@
 MultiDeviceSetupDialog* MultiDeviceSetupDialog::current_instance_ = nullptr;
 
 // static
+gfx::NativeWindow MultiDeviceSetupDialog::containing_window_ = nullptr;
+
+// static
 void MultiDeviceSetupDialog::Show() {
-  // The dialog is already showing, so there is nothing to do.
-  if (current_instance_)
+  // Focus the window hosting the dialog that has already been created.
+  if (containing_window_) {
+    DCHECK(current_instance_);
+    containing_window_->Focus();
     return;
+  }
 
   current_instance_ = new MultiDeviceSetupDialog();
-  gfx::NativeWindow window = chrome::ShowWebDialog(
+  containing_window_ = chrome::ShowWebDialog(
       nullptr /* parent */, ProfileManager::GetActiveUserProfile(),
       current_instance_);
 
   // Remove the black backdrop behind the dialog window which appears in tablet
   // and full-screen mode.
-  ash::WindowBackdrop::Get(window)->SetBackdropMode(
-      ash::WindowBackdrop::BackdropMode::kDisabled);
+  ash::WindowBackdrop::Get(containing_window_)
+      ->SetBackdropMode(ash::WindowBackdrop::BackdropMode::kDisabled);
 }
 
 // static
@@ -101,6 +107,7 @@
 void MultiDeviceSetupDialog::OnDialogClosed(const std::string& json_retval) {
   DCHECK(this == current_instance_);
   current_instance_ = nullptr;
+  containing_window_ = nullptr;
 
   // Note: The call below deletes |this|, so there is no further need to keep
   // track of the pointer.
diff --git a/chrome/browser/ui/webui/chromeos/multidevice_setup/multidevice_setup_dialog.h b/chrome/browser/ui/webui/chromeos/multidevice_setup/multidevice_setup_dialog.h
index 18a4359b..eab6f4d 100644
--- a/chrome/browser/ui/webui/chromeos/multidevice_setup/multidevice_setup_dialog.h
+++ b/chrome/browser/ui/webui/chromeos/multidevice_setup/multidevice_setup_dialog.h
@@ -47,6 +47,7 @@
 
  private:
   static MultiDeviceSetupDialog* current_instance_;
+  static gfx::NativeWindow containing_window_;
 
   // List of callbacks that have registered themselves to be invoked once this
   // dialog is closed.
diff --git a/chrome/browser/web_applications/system_web_app_manager_browsertest.cc b/chrome/browser/web_applications/system_web_app_manager_browsertest.cc
index efb094b0..b4c4d3b 100644
--- a/chrome/browser/web_applications/system_web_app_manager_browsertest.cc
+++ b/chrome/browser/web_applications/system_web_app_manager_browsertest.cc
@@ -1126,7 +1126,9 @@
             GetManager().GetAppIds().size());
 }
 
-IN_PROC_BROWSER_TEST_P(SystemWebAppManagerUpgradeBrowserTest, Upgrade) {
+// Test is consistently failing: crbug/1162044
+IN_PROC_BROWSER_TEST_P(SystemWebAppManagerUpgradeBrowserTest,
+                       DISABLED_Upgrade) {
   WaitForSystemAppsSynchronized();
   const auto& app_ids = GetManager().GetAppIds();
 
diff --git a/chrome/build/linux.pgo.txt b/chrome/build/linux.pgo.txt
index 24f9c851..091f243 100644
--- a/chrome/build/linux.pgo.txt
+++ b/chrome/build/linux.pgo.txt
@@ -1 +1 @@
-chrome-linux-master-1608938443-5e2a6a5509ef0c35b284bb575c523599912f115a.profdata
+chrome-linux-master-1609156644-42cb6a035b1fe5a631f9a5a0f3f4dab0f809ccfe.profdata
diff --git a/chrome/build/mac.pgo.txt b/chrome/build/mac.pgo.txt
index 82ffbf63..8d3110d 100644
--- a/chrome/build/mac.pgo.txt
+++ b/chrome/build/mac.pgo.txt
@@ -1 +1 @@
-chrome-mac-master-1608938443-813619ab6447ba11a985c78bfacde75dce409fd5.profdata
+chrome-mac-master-1609156644-74221c569e797d96fdd58cd45c2be34f02342fb7.profdata
diff --git a/chrome/build/win32.pgo.txt b/chrome/build/win32.pgo.txt
index c66c365..ab8ddd5 100644
--- a/chrome/build/win32.pgo.txt
+++ b/chrome/build/win32.pgo.txt
@@ -1 +1 @@
-chrome-win32-master-1608508387-56780dae3832c65bafd36e4cfe96756ad3b86eef.profdata
+chrome-win32-master-1609077635-95cc21097bbc828eec82ee3506f035af36a6f657.profdata
diff --git a/chrome/build/win64.pgo.txt b/chrome/build/win64.pgo.txt
index 95774ae..fc208a8 100644
--- a/chrome/build/win64.pgo.txt
+++ b/chrome/build/win64.pgo.txt
@@ -1 +1 @@
-chrome-win64-master-1608913095-f136f8f83569a182f681a83edbe456e8f7d0cecd.profdata
+chrome-win64-master-1609124291-e7a0465f695fe158abf9ec0e9104d31fe42b886f.profdata
diff --git a/chrome/common/extensions/docs/templates/public/apps/system_powerSource.html b/chrome/common/extensions/docs/templates/public/apps/system_powerSource.html
deleted file mode 100644
index 139973d1..0000000
--- a/chrome/common/extensions/docs/templates/public/apps/system_powerSource.html
+++ /dev/null
@@ -1 +0,0 @@
-{{+partials.standard_apps_api api:apis.apps.system_power_source/}}
diff --git a/chrome/common/extensions/permissions/permission_set_unittest.cc b/chrome/common/extensions/permissions/permission_set_unittest.cc
index 7816ebd..70e2c32 100644
--- a/chrome/common/extensions/permissions/permission_set_unittest.cc
+++ b/chrome/common/extensions/permissions/permission_set_unittest.cc
@@ -774,7 +774,6 @@
   skip.insert(APIPermission::kSystemDisplay);
   skip.insert(APIPermission::kSystemMemory);
   skip.insert(APIPermission::kSystemNetwork);
-  skip.insert(APIPermission::kSystemPowerSource);
   skip.insert(APIPermission::kTts);
   skip.insert(APIPermission::kUnlimitedStorage);
   skip.insert(APIPermission::kWebcamPrivate);
diff --git a/chrome/install_static/BUILD.gn b/chrome/install_static/BUILD.gn
index 584965d..ea68d71 100644
--- a/chrome/install_static/BUILD.gn
+++ b/chrome/install_static/BUILD.gn
@@ -31,7 +31,7 @@
 
     sources = [
       "../app/chrome_dll_resource.h",
-      "../chrome/common/chrome_icon_resources_win.h",
+      "../common/chrome_icon_resources_win.h",
       "install_constants.h",
       "install_details.cc",
       "install_details.h",
@@ -71,6 +71,7 @@
   # process-wide InstallDetails instance (i.e., chrome_elf.dll).
   source_set("primary_module") {
     sources = [ "get_install_details_payload.cc" ]
+    deps = [ ":install_static_util" ]
   }
 
   # A source set for use by modules in a process that fetch the process-wide
@@ -102,6 +103,7 @@
       "//build:branding_buildflags",
       "//chrome/install_static:install_static_util",
       "//chrome/install_static/test:test_support",
+      "//components/version_info",
       "//testing/gmock",
       "//testing/gtest",
     ]
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index ab655a5a..d2b4077 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -6795,8 +6795,6 @@
       sources += [
         "../browser/apps/platform_apps/app_shim_interactive_uitest_mac.mm",
         "../browser/apps/platform_apps/app_shim_quit_interactive_uitest_mac.mm",
-        "../browser/focus_ring_browsertest_mac.h",
-        "../browser/focus_ring_browsertest_mac.mm",
         "../browser/global_keyboard_shortcuts_mac_browsertest.mm",
         "../browser/notifications/notification_interactive_uitest_mac.mm",
         "../browser/spellchecker/spellcheck_mac_view_interactive_uitest.mm",
diff --git a/chrome/test/android/javatests/src/org/chromium/chrome/test/util/browser/signin/MockChangeEventChecker.java b/chrome/test/android/javatests/src/org/chromium/chrome/test/util/browser/signin/MockChangeEventChecker.java
index 9ead390..76969e89 100644
--- a/chrome/test/android/javatests/src/org/chromium/chrome/test/util/browser/signin/MockChangeEventChecker.java
+++ b/chrome/test/android/javatests/src/org/chromium/chrome/test/util/browser/signin/MockChangeEventChecker.java
@@ -18,7 +18,7 @@
  */
 public final class MockChangeEventChecker
         implements SigninHelper.AccountChangeEventChecker {
-    private Map<String, List<String>> mEvents = new HashMap<>();
+    private final Map<String, List<String>> mEvents = new HashMap<>();
 
     @Override
     public List<String> getAccountChangeEvents(
diff --git a/chrome/test/data/focus_rings/focus_ring_browsertest_dark_mode_button.png b/chrome/test/data/focus_rings/focus_ring_browsertest_dark_mode_button.png
deleted file mode 100644
index 7336590..0000000
--- a/chrome/test/data/focus_rings/focus_ring_browsertest_dark_mode_button.png
+++ /dev/null
Binary files differ
diff --git a/chrome/test/data/focus_rings/focus_ring_browsertest_dark_mode_button_mac.png b/chrome/test/data/focus_rings/focus_ring_browsertest_dark_mode_button_mac.png
deleted file mode 100644
index b0ea727..0000000
--- a/chrome/test/data/focus_rings/focus_ring_browsertest_dark_mode_button_mac.png
+++ /dev/null
Binary files differ
diff --git a/chrome/test/data/focus_rings/focus_ring_browsertest_dark_mode_button_win.png b/chrome/test/data/focus_rings/focus_ring_browsertest_dark_mode_button_win.png
deleted file mode 100644
index 03f91f2..0000000
--- a/chrome/test/data/focus_rings/focus_ring_browsertest_dark_mode_button_win.png
+++ /dev/null
Binary files differ
diff --git a/chromeos/CHROMEOS_LKGM b/chromeos/CHROMEOS_LKGM
index 470481e..f6d157b3 100644
--- a/chromeos/CHROMEOS_LKGM
+++ b/chromeos/CHROMEOS_LKGM
@@ -1 +1 @@
-13685.0.0
\ No newline at end of file
+13690.0.0
\ No newline at end of file
diff --git a/chromeos/components/camera_app_ui/resources/css/main.css b/chromeos/components/camera_app_ui/resources/css/main.css
index 0b88716a..2d9a259 100644
--- a/chromeos/components/camera_app_ui/resources/css/main.css
+++ b/chromeos/components/camera_app_ui/resources/css/main.css
@@ -1563,7 +1563,6 @@
   padding-top: calc(100% / 3);
   visibility: hidden;
   width: calc(100% / 3);
-  z-index: 30;
 }
 
 body.photo.scan-barcode .barcode-scan-box {
@@ -1602,10 +1601,20 @@
  * responsive window design. */
 .barcode-chip-container {
   --chip-height: 32px;
+  --chip-max-width: 420px;
+  --min-scanbox-distance: 40px;
+  --text-expand-button-height: 40px;
+  --text-line-height: 24px;
+  --text-padding-vertical: 8px;
+
   left: 50%;
+  max-width: min(80%, var(--chip-max-width));
   opacity: 1;
   position: absolute;
-  top: 10%;
+  /* Avoid collision with scan-box and preview-box */
+  top: max(8px, min(10%, 33.33% - var(--text-line-height) -
+      var(--text-expand-button-height) - 2 * var(--text-padding-vertical) -
+      var(--min-scanbox-distance)));
   transform: translateX(-50%);
   transition: opacity var(--moderate1-duration) var(--standard-easing);
   z-index: 50;
@@ -1633,6 +1642,7 @@
   background: url(/images/barcode_url.svg) no-repeat;
   content: '';
   display: inline-block;
+  flex-shrink: 0;
   height: 20px;
   margin-inline-end: 6px;
   vertical-align: middle;
@@ -1641,7 +1651,6 @@
 
 .barcode-chip-url > a {
   color: var(--blue-300);
-  max-width: 416px;
   overflow: hidden;
   text-decoration: none;
   text-overflow: ellipsis;
@@ -1678,14 +1687,13 @@
   display: flex;
   flex-direction: column;
   font: 400 15px Roboto;
+  padding: var(--text-padding-vertical) 20px;
 }
 
 #barcode-chip-text-content {
-  --line-height: 24px;
   color: var(--grey-200);
-  line-height: var(--line-height);
-  margin: 8px 20px;
-  max-width: 416px;
+  line-height: var(--text-line-height);
+  max-width: 100%;
   overflow: hidden;
   text-decoration: none;
   text-overflow: ellipsis;
@@ -1694,14 +1702,15 @@
 
 .expanded #barcode-chip-text-content {
   /* TODO(b/172879638): Make this responsive */
-  max-height: calc(var(--line-height) * 10);
+  max-height: calc(var(--text-line-height) * 10);
   white-space: normal;
-  width: 416px;
+  /* Keep the same width as before to avoid text jumping. */
+  width: var(--chip-max-width);
 }
 
 #barcode-chip-text-expand {
   background: url(/images/barcode_chevron_down.svg) center no-repeat;
-  height: 40px;
+  height: var(--text-expand-button-height);
   width: 100%;
 }
 
diff --git a/chromeos/components/camera_app_ui/resources/js/barcode_chip.js b/chromeos/components/camera_app_ui/resources/js/barcode_chip.js
index abdc00e..0bad37f 100644
--- a/chromeos/components/camera_app_ui/resources/js/barcode_chip.js
+++ b/chromeos/components/camera_app_ui/resources/js/barcode_chip.js
@@ -5,6 +5,7 @@
 import {browserProxy} from './browser_proxy/browser_proxy.js';
 import {assert} from './chrome_util.js';
 import * as dom from './dom.js';
+import {BarcodeContentType, sendBarcodeDetectedEvent} from './metrics.js';
 import * as snackbar from './snackbar.js';
 import * as state from './state.js';
 import {OneShotTimer} from './timer.js';
@@ -170,8 +171,20 @@
   currentCode = code;
 
   if (isSafeUrl(code)) {
+    sendBarcodeDetectedEvent({contentType: BarcodeContentType.URL});
     showUrl(code);
   } else {
+    sendBarcodeDetectedEvent({contentType: BarcodeContentType.TEXT});
     showText(code);
   }
 }
+
+/**
+ * Dismisses the current barcode chip if it's being shown.
+ */
+export function dismiss() {
+  if (currentTimer === null) {
+    return;
+  }
+  currentTimer.fireNow();
+}
diff --git a/chromeos/components/camera_app_ui/resources/js/metrics.js b/chromeos/components/camera_app_ui/resources/js/metrics.js
index 197de91..9bdc97dd 100644
--- a/chromeos/components/camera_app_ui/resources/js/metrics.js
+++ b/chromeos/components/camera_app_ui/resources/js/metrics.js
@@ -371,3 +371,41 @@
         [20, colNo],
       ]));
 }
+
+/**
+ * Sends the barcode enabled event.
+ */
+export function sendBarcodeEnabledEvent() {
+  sendEvent({
+    eventCategory: 'barcode',
+    eventAction: 'enable',
+  });
+}
+
+/**
+ * Types of the decoded barcode content.
+ * @enum {string}
+ */
+export const BarcodeContentType = {
+  TEXT: 'text',
+  URL: 'url',
+};
+
+/**
+ * @typedef {{
+ *   contentType: !BarcodeContentType,
+ * }}
+ */
+export let BarcodeDetectedEventParam;
+
+/**
+ * Sends the barcode detected event.
+ * @param {!BarcodeDetectedEventParam} param
+ */
+export function sendBarcodeDetectedEvent({contentType}) {
+  sendEvent({
+    eventCategory: 'barcode',
+    eventAction: 'detect',
+    eventLabel: contentType,
+  });
+}
diff --git a/chromeos/components/camera_app_ui/resources/js/models/native_file_system_entry.js b/chromeos/components/camera_app_ui/resources/js/models/native_file_system_entry.js
index 33d247f..c87189c5 100644
--- a/chromeos/components/camera_app_ui/resources/js/models/native_file_system_entry.js
+++ b/chromeos/components/camera_app_ui/resources/js/models/native_file_system_entry.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 {AsyncJobQueue} from '../async_job_queue.js';
 import {assert} from '../chrome_util.js';
 import {NotImplementedError} from '../type.js';
 
@@ -116,6 +117,12 @@
 }
 
 /**
+ * Guards from name collision when creating files.
+ * @type {!AsyncJobQueue}
+ */
+const createFileJobs = new AsyncJobQueue();
+
+/**
  * The directory entry implementation for SWA.
  * @implements {AbstractDirectoryEntry}
  */
@@ -156,11 +163,40 @@
   }
 
   /**
+   * Checks if file or directory with the target name exists.
+   * @param {string} name
+   * @return {!Promise<boolean>}
+   * @private
+   */
+  async isExist_(name) {
+    try {
+      await this.getFile(name);
+      return true;
+    } catch (e) {
+      if (e.name === 'NotFoundError') {
+        return false;
+      }
+      if (e.name === 'TypeMismatchError' || e instanceof TypeError) {
+        // Directory with same name exists.
+        return true;
+      }
+      throw e;
+    }
+  }
+
+  /**
    * @override
    */
   async createFile(name) {
-    const handle = await this.handle_.getFileHandle(name, {create: true});
-    return new NativeFileEntry(handle);
+    return createFileJobs.push(async () => {
+      let uniqueName = name;
+      for (let i = 0; await this.isExist_(uniqueName);) {
+        uniqueName = name.replace(/^(.*?)(?=\.)/, `$& (${++i})`);
+      }
+      const handle =
+          await this.handle_.getFileHandle(uniqueName, {create: true});
+      return new NativeFileEntry(handle);
+    });
   }
 
   /**
diff --git a/chromeos/components/camera_app_ui/resources/js/views/camera/options.js b/chromeos/components/camera_app_ui/resources/js/views/camera/options.js
index c6421fd..6a181d5 100644
--- a/chromeos/components/camera_app_ui/resources/js/views/camera/options.js
+++ b/chromeos/components/camera_app_ui/resources/js/views/camera/options.js
@@ -8,9 +8,10 @@
 // eslint-disable-next-line no-unused-vars
 import {DeviceInfoUpdater} from '../../device/device_info_updater.js';
 import * as dom from '../../dom.js';
+import {sendBarcodeEnabledEvent} from '../../metrics.js';
 import * as nav from '../../nav.js';
 import * as state from '../../state.js';
-import {Facing, PerfEvent, ViewName} from '../../type.js';
+import {Facing, Mode, PerfEvent, ViewName} from '../../type.js';
 import * as util from '../../util.js';
 
 /**
@@ -105,6 +106,13 @@
     this.toggleMirror_.addEventListener('click', () => this.saveMirroring_());
     this.toggleBarcode_.addEventListener('click', () => this.updateBarcode_());
 
+    state.addObserver(Mode.PHOTO, (inPhotoMode) => {
+      if (!inPhotoMode) {
+        this.toggleBarcode_.checked = false;
+        this.updateBarcode_();
+      }
+    });
+
     util.bindElementAriaLabelWithState({
       element: dom.get('#toggle-timer', Element),
       state: state.State.TIMER_3SEC,
@@ -257,6 +265,9 @@
    */
   updateBarcode_() {
     state.set(state.State.SCAN_BARCODE, this.toggleBarcode_.checked);
+    if (this.toggleBarcode_.checked) {
+      sendBarcodeEnabledEvent();
+    }
   }
 
   /**
diff --git a/chromeos/components/camera_app_ui/resources/js/views/camera/preview.js b/chromeos/components/camera_app_ui/resources/js/views/camera/preview.js
index bf0c7d5..253ed54a 100644
--- a/chromeos/components/camera_app_ui/resources/js/views/camera/preview.js
+++ b/chromeos/components/camera_app_ui/resources/js/views/camera/preview.js
@@ -8,8 +8,8 @@
 import {DeviceOperator, parseMetadata} from '../../mojo/device_operator.js';
 import * as nav from '../../nav.js';
 import * as state from '../../state.js';
-import * as util from '../../util.js';
 import {Mode} from '../../type.js';
+import * as util from '../../util.js';
 
 /**
  * Creates a controller for the video preview of Camera view.
@@ -208,6 +208,7 @@
       this.scanner_.start();
     } else {
       this.scanner_.stop();
+      barcodeChip.dismiss();
     }
   }
 
diff --git a/chromeos/components/camera_app_ui/resources/views/main.html b/chromeos/components/camera_app_ui/resources/views/main.html
index 84a2678f..78e33a2 100644
--- a/chromeos/components/camera_app_ui/resources/views/main.html
+++ b/chromeos/components/camera_app_ui/resources/views/main.html
@@ -79,6 +79,30 @@
           <div class="snackbar" aria-live="polite"></div>
           <div id="camera-mode" class="centered-overlay"></div>
         </div>
+        <div id="barcode-chip-url-container"
+             class="invisible barcode-chip-container">
+          <div class="barcode-chip-url">
+            <a target="_blank"></a>
+          </div>
+          <div class="circle">
+            <button class="barcode-copy-button" tabindex="0"
+              i18n-label="barcode_copy_link_button"></button>
+          </div>
+        </div>
+        <div id="barcode-chip-text-container"
+             class="invisible barcode-chip-container"
+             role="dialog" i18n-label="barcode_text_detected"
+             aria-live="polite" aria-describedby="barcode-chip-text-content">
+          <div class="barcode-chip-text">
+            <div id="barcode-chip-text-content"></div>
+            <button id="barcode-chip-text-expand"
+                    aria-expanded="false"></button>
+          </div>
+          <div class="circle">
+            <button class="barcode-copy-button" tabindex="0"
+              i18n-label="barcode_copy_text_button"></button>
+          </div>
+        </div>
       </div>
       <div id="video-snapshot-holder" class="buttons right-stripe circle">
         <button id="video-snapshot" tabindex="0"
@@ -406,29 +430,6 @@
       </div>
     </div>
     <div id="toast" class="centered-overlay" aria-live="polite"></div>
-    <div id="barcode-chip-url-container"
-         class="invisible barcode-chip-container">
-      <div class="barcode-chip-url">
-        <a target="_blank"></a>
-      </div>
-      <div class="circle">
-        <button class="barcode-copy-button" tabindex="0"
-          i18n-label="barcode_copy_link_button"></button>
-      </div>
-    </div>
-    <div id="barcode-chip-text-container"
-         class="invisible barcode-chip-container"
-         role="dialog" i18n-label="barcode_text_detected"
-         aria-live="polite" aria-describedby="barcode-chip-text-content">
-      <div class="barcode-chip-text">
-        <div id="barcode-chip-text-content"></div>
-        <button id="barcode-chip-text-expand" aria-expanded="false"></button>
-      </div>
-      <div class="circle">
-        <button class="barcode-copy-button" tabindex="0"
-          i18n-label="barcode_copy_text_button"></button>
-      </div>
-    </div>
     <div id="tooltip" aria-hidden="true"></div>
     <audio id="sound-tick-final" src="/sounds/tick_final.ogg"
       data-timeout="1000">
diff --git a/components/signin/core/browser/android/javatests/src/org/chromium/components/signin/test/util/AccountHolder.java b/components/signin/core/browser/android/javatests/src/org/chromium/components/signin/test/util/AccountHolder.java
index 3c8cac35..0ed3a5b 100644
--- a/components/signin/core/browser/android/javatests/src/org/chromium/components/signin/test/util/AccountHolder.java
+++ b/components/signin/core/browser/android/javatests/src/org/chromium/components/signin/test/util/AccountHolder.java
@@ -10,7 +10,9 @@
 import androidx.annotation.Nullable;
 
 import org.chromium.components.signin.AccessTokenData;
+import org.chromium.components.signin.AccountUtils;
 
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
@@ -99,6 +101,16 @@
                 && mAccount.equals(((AccountHolder) that).getAccount());
     }
 
+    /**
+     * Creates builder of {@link AccountHolder} for the given account email.
+     */
+    public static Builder builder(String accountEmail) {
+        return new Builder(AccountUtils.createAccountFromName(accountEmail));
+    }
+
+    /**
+     * Creates builder of {@link AccountHolder} for the given account.
+     */
     public static Builder builder(@NonNull Account account) {
         return new Builder(account);
     }
@@ -118,11 +130,11 @@
      * Used to construct AccountHolder instances.
      */
     public static class Builder {
-        private Account mAccount;
+        private final Account mAccount;
         private Map<String, String> mAuthTokens = new HashMap<>();
         private Map<String, Boolean> mHasBeenAccepted = new HashMap<>();
         private boolean mAlwaysAccept;
-        private Set<String> mFeatures = new HashSet<>();
+        private final Set<String> mFeatures = new HashSet<>();
 
         Builder(@NonNull Account account) {
             mAccount = account;
@@ -149,13 +161,10 @@
         }
 
         /**
-         * Sets the set of features for this account.
-         *
-         * @param features The set of account features.
-         * @return This object, for chaining method calls.
+         * Adds features to the set of features for this account.
          */
-        public Builder featureSet(@NonNull Set<String> features) {
-            mFeatures = features;
+        public Builder addFeatures(String... features) {
+            Collections.addAll(mFeatures, features);
             return this;
         }
 
diff --git a/components/signin/core/browser/android/javatests/src/org/chromium/components/signin/test/util/FakeAccountManagerFacade.java b/components/signin/core/browser/android/javatests/src/org/chromium/components/signin/test/util/FakeAccountManagerFacade.java
index 711f6bf..82f4cb7 100644
--- a/components/signin/core/browser/android/javatests/src/org/chromium/components/signin/test/util/FakeAccountManagerFacade.java
+++ b/components/signin/core/browser/android/javatests/src/org/chromium/components/signin/test/util/FakeAccountManagerFacade.java
@@ -177,7 +177,7 @@
      */
     public void addProfileData(ProfileDataSource.ProfileData profileData) {
         assert mFakeProfileDataSource != null : "ProfileDataSource was disabled!";
-        ThreadUtils.runOnUiThreadBlocking(() -> mFakeProfileDataSource.addProfileData(profileData));
+        mFakeProfileDataSource.addProfileData(profileData);
     }
 
     @GuardedBy("mLock")
diff --git a/components/signin/core/browser/android/javatests/src/org/chromium/components/signin/test/util/FakeProfileDataSource.java b/components/signin/core/browser/android/javatests/src/org/chromium/components/signin/test/util/FakeProfileDataSource.java
index 9ce003f..7c1753c 100644
--- a/components/signin/core/browser/android/javatests/src/org/chromium/components/signin/test/util/FakeProfileDataSource.java
+++ b/components/signin/core/browser/android/javatests/src/org/chromium/components/signin/test/util/FakeProfileDataSource.java
@@ -4,7 +4,6 @@
 
 package org.chromium.components.signin.test.util;
 
-import androidx.annotation.MainThread;
 import androidx.annotation.Nullable;
 
 import org.chromium.base.ObserverList;
@@ -55,12 +54,12 @@
      * If the account email of the {@link ProfileData} already exists, replace the old
      * {@link ProfileData} with the given one.
      */
-    @MainThread
     public void addProfileData(ProfileData profileData) {
-        ThreadUtils.assertOnUiThread();
-        mProfileDataMap.put(profileData.getAccountEmail(), profileData);
-        for (Observer observer : mObservers) {
-            observer.onProfileDataUpdated(profileData);
-        }
+        ThreadUtils.runOnUiThreadBlocking(() -> {
+            mProfileDataMap.put(profileData.getAccountEmail(), profileData);
+            for (Observer observer : mObservers) {
+                observer.onProfileDataUpdated(profileData);
+            }
+        });
     }
 }
diff --git a/components/signin/core/browser/android/junit/src/org/chromium/components/signin/test/AccountManagerFacadeRobolectricTest.java b/components/signin/core/browser/android/junit/src/org/chromium/components/signin/test/AccountManagerFacadeRobolectricTest.java
index ab862ca..6e5c80a 100644
--- a/components/signin/core/browser/android/junit/src/org/chromium/components/signin/test/AccountManagerFacadeRobolectricTest.java
+++ b/components/signin/core/browser/android/junit/src/org/chromium/components/signin/test/AccountManagerFacadeRobolectricTest.java
@@ -37,8 +37,6 @@
 import org.chromium.components.signin.test.util.FakeAccountManagerDelegate;
 import org.chromium.testing.local.CustomShadowUserManager;
 
-import java.util.Arrays;
-import java.util.HashSet;
 import java.util.List;
 import java.util.concurrent.atomic.AtomicInteger;
 
@@ -225,15 +223,14 @@
         assertChildAccountStatus(bothAccount, ChildAccountStatus.REGULAR_CHILD);
     }
 
-    private Account addTestAccount(String accountName, String... features) {
-        Account account = AccountUtils.createAccountFromName(accountName);
-        AccountHolder holder = AccountHolder.builder(account)
+    private Account addTestAccount(String accountEmail, String... features) {
+        AccountHolder holder = AccountHolder.builder(accountEmail)
                                        .alwaysAccept(true)
-                                       .featureSet(new HashSet<>(Arrays.asList(features)))
+                                       .addFeatures(features)
                                        .build();
         mDelegate.addAccountHolderExplicitly(holder);
         Assert.assertFalse(((AccountManagerFacadeImpl) mFacade).isUpdatePending().get());
-        return account;
+        return holder.getAccount();
     }
 
     private void removeTestAccount(Account account) {
diff --git a/content/browser/direct_sockets/direct_sockets_service_impl.cc b/content/browser/direct_sockets/direct_sockets_service_impl.cc
index 9f6a9ef..92c70ce 100644
--- a/content/browser/direct_sockets/direct_sockets_service_impl.cc
+++ b/content/browser/direct_sockets/direct_sockets_service_impl.cc
@@ -74,8 +74,8 @@
     return;
   }
 
-  // TODO(crbug.com/905818): Populate local_addr from options.
-  const base::Optional<net::IPEndPoint> local_addr = base::nullopt;
+  base::Optional<net::IPEndPoint> local_addr = base::nullopt;
+  PopulateLocalAddr(*options, local_addr);
 
   network::mojom::TCPConnectedSocketOptionsPtr tcp_connected_socket_options =
       network::mojom::TCPConnectedSocketOptions::New();
@@ -182,6 +182,19 @@
   return net::ERR_NOT_IMPLEMENTED;
 }
 
+void DirectSocketsServiceImpl::PopulateLocalAddr(
+    const blink::mojom::DirectSocketOptions& options,
+    base::Optional<net::IPEndPoint>& local_addr) {
+  DCHECK(!local_addr);
+  if (!options.local_hostname)
+    return;
+
+  net::IPAddress local_address;
+  bool success = local_address.AssignFromIPLiteral(*options.local_hostname);
+  if (success)
+    local_addr = net::IPEndPoint(local_address, options.local_port);
+}
+
 network::mojom::NetworkContext* DirectSocketsServiceImpl::GetNetworkContext() {
   if (network::mojom::NetworkContext* network_context =
           GetNetworkContextForTesting()) {
diff --git a/content/browser/direct_sockets/direct_sockets_service_impl.h b/content/browser/direct_sockets/direct_sockets_service_impl.h
index 227b16758..c705e66d 100644
--- a/content/browser/direct_sockets/direct_sockets_service_impl.h
+++ b/content/browser/direct_sockets/direct_sockets_service_impl.h
@@ -71,6 +71,10 @@
   net::Error ValidateOptions(const blink::mojom::DirectSocketOptions& options,
                              net::IPAddress& remote_address);
 
+  // Populate |local_addr| from options.
+  void PopulateLocalAddr(const blink::mojom::DirectSocketOptions& options,
+                         base::Optional<net::IPEndPoint>& local_addr);
+
   network::mojom::NetworkContext* GetNetworkContext();
 
   RenderFrameHost* frame_host_;
diff --git a/content/browser/direct_sockets/direct_sockets_unittest.cc b/content/browser/direct_sockets/direct_sockets_unittest.cc
index ce023ed..843cabe 100644
--- a/content/browser/direct_sockets/direct_sockets_unittest.cc
+++ b/content/browser/direct_sockets/direct_sockets_unittest.cc
@@ -36,6 +36,11 @@
     return direct_sockets_service().ValidateOptions(options, remote_address);
   }
 
+  void PopulateLocalAddr(const blink::mojom::DirectSocketOptions& options,
+                         base::Optional<net::IPEndPoint>& local_addr) {
+    return direct_sockets_service().PopulateLocalAddr(options, local_addr);
+  }
+
  private:
   base::test::ScopedFeatureList feature_list_;
   std::unique_ptr<DirectSocketsServiceImpl> direct_sockets_service_;
@@ -61,4 +66,35 @@
   EXPECT_EQ(ValidateOptions(options), net::ERR_NAME_NOT_RESOLVED);
 }
 
+TEST_F(DirectSocketsUnitTest, PopulateLocalAddr) {
+  blink::mojom::DirectSocketOptions options;
+
+  // Test for default condition.
+  base::Optional<net::IPEndPoint> local_addr = base::nullopt;
+  PopulateLocalAddr(options, local_addr);
+  EXPECT_EQ(local_addr, base::nullopt);
+
+  // Test with IPv4 address and default port(0) provided.
+  local_addr = base::nullopt;
+  options.local_hostname = "12.34.56.78";
+  PopulateLocalAddr(options, local_addr);
+  const uint8_t ipv4[net::IPAddress::kIPv4AddressSize] = {12, 34, 56, 78};
+  EXPECT_EQ(local_addr, net::IPEndPoint(net::IPAddress(ipv4), 0));
+
+  // Test with IPv6 address and default port(0) provided.
+  local_addr = base::nullopt;
+  options.local_hostname = "fedc:ba98:7654:3210:fedc:ba98:7654:3210";
+  PopulateLocalAddr(options, local_addr);
+  const uint8_t ipv6[net::IPAddress::kIPv6AddressSize] = {
+      0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10,
+      0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10};
+  EXPECT_EQ(local_addr, net::IPEndPoint(net::IPAddress(ipv6), 0));
+
+  // Test with IPv6 address and port(12345) provided.
+  local_addr = base::nullopt;
+  options.local_port = 12345;
+  PopulateLocalAddr(options, local_addr);
+  EXPECT_EQ(local_addr, net::IPEndPoint(net::IPAddress(ipv6), 12345));
+}
+
 }  // namespace content
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
index 8056f3b..77226795 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -3957,6 +3957,11 @@
 }
 
 bool WebContentsImpl::ShouldIgnoreUnresponsiveRenderer() {
+  // Suppress unresponsive renderers if the command line asks for it.
+  if (base::CommandLine::ForCurrentProcess()->HasSwitch(
+          switches::kDisableHangMonitor))
+    return true;
+
   if (suppress_unresponsive_renderer_count_ > 0)
     return true;
 
diff --git a/extensions/browser/BUILD.gn b/extensions/browser/BUILD.gn
index 7f93bfed..2dc05ba9 100644
--- a/extensions/browser/BUILD.gn
+++ b/extensions/browser/BUILD.gn
@@ -529,7 +529,6 @@
       "api/audio/audio_apitest_chromeos.cc",
       "api/cec_private/cec_private_apitest.cc",
       "api/media_perception_private/media_perception_private_apitest.cc",
-      "api/system_power_source/system_power_source_apitest.cc",
       "api/virtual_keyboard/virtual_keyboard_apitest.cc",
     ]
 
@@ -773,7 +772,6 @@
       "api/media_perception_private/conversion_utils_unittest.cc",
       "api/media_perception_private/media_perception_api_manager_unittest.cc",
       "api/networking_private/networking_private_chromeos_unittest.cc",
-      "api/system_power_source/system_power_source_api_unittest.cc",
       "api/virtual_keyboard_private/virtual_keyboard_private_api_unittest.cc",
       "api/webcam_private/visca_webcam_unittest.cc",
     ]
diff --git a/extensions/browser/api/BUILD.gn b/extensions/browser/api/BUILD.gn
index f6912aef..426b3316 100644
--- a/extensions/browser/api/BUILD.gn
+++ b/extensions/browser/api/BUILD.gn
@@ -133,7 +133,6 @@
       "//extensions/browser/api/cec_private",
       "//extensions/browser/api/clipboard",
       "//extensions/browser/api/diagnostics",
-      "//extensions/browser/api/system_power_source",
       "//extensions/browser/api/virtual_keyboard",
       "//extensions/browser/api/vpn_provider",
       "//extensions/browser/api/webcam_private",
diff --git a/extensions/browser/api/system_power_source/BUILD.gn b/extensions/browser/api/system_power_source/BUILD.gn
deleted file mode 100644
index f014563..0000000
--- a/extensions/browser/api/system_power_source/BUILD.gn
+++ /dev/null
@@ -1,19 +0,0 @@
-# Copyright 2018 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("//extensions/buildflags/buildflags.gni")
-
-assert(enable_extensions,
-       "Cannot depend on extensions because enable_extensions=false.")
-
-source_set("system_power_source") {
-  sources = [
-    "system_power_source_api.cc",
-    "system_power_source_api.h",
-  ]
-
-  deps = [ "//extensions/common/api" ]
-
-  public_deps = [ "//extensions/browser:browser_sources" ]
-}
diff --git a/extensions/browser/api/system_power_source/system_power_source_api.cc b/extensions/browser/api/system_power_source/system_power_source_api.cc
deleted file mode 100644
index e99e4fc..0000000
--- a/extensions/browser/api/system_power_source/system_power_source_api.cc
+++ /dev/null
@@ -1,146 +0,0 @@
-// Copyright 2018 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 "extensions/browser/api/system_power_source/system_power_source_api.h"
-
-#include <cmath>
-
-#include "base/no_destructor.h"
-#include "chromeos/dbus/power/power_manager_client.h"
-#include "extensions/browser/event_router.h"
-#include "extensions/common/api/system_power_source.h"
-
-namespace extensions {
-
-namespace {
-
-std::unique_ptr<double> RoundDownToTwoSignificantDigits(double d) {
-  if (!std::isnormal(d) || d <= 0.0)
-    return nullptr;
-
-  int scale = std::floor(std::log10(d));
-  return std::make_unique<double>(std::floor(d / std::pow(10, scale - 1)) *
-                                  std::pow(10, scale - 1));
-}
-
-api::system_power_source::PowerSourceType PowerSourceTypeFromProtoValue(
-    power_manager::PowerSupplyProperties_PowerSource_Type type) {
-  switch (type) {
-    case power_manager::PowerSupplyProperties_PowerSource_Type_OTHER:
-      return api::system_power_source::POWER_SOURCE_TYPE_UNKNOWN;
-
-    case power_manager::PowerSupplyProperties_PowerSource_Type_MAINS:
-      return api::system_power_source::POWER_SOURCE_TYPE_MAINS;
-
-    case power_manager::PowerSupplyProperties_PowerSource_Type_USB_C:
-    case power_manager::PowerSupplyProperties_PowerSource_Type_USB_BC_1_2:
-      return api::system_power_source::POWER_SOURCE_TYPE_USB;
-  }
-  NOTREACHED();
-  return api::system_power_source::POWER_SOURCE_TYPE_UNKNOWN;
-}
-
-std::vector<api::system_power_source::PowerSourceInfo>
-PowerSourceInfoVectorFromProtoValue(
-    const power_manager::PowerSupplyProperties& proto) {
-  std::vector<api::system_power_source::PowerSourceInfo> power_sources;
-  base::Optional<std::string> external_power_source_id;
-
-  if (proto.has_external_power_source_id())
-    external_power_source_id = proto.external_power_source_id();
-
-  power_sources.reserve(proto.available_external_power_source_size());
-  for (int i = 0; i < proto.available_external_power_source_size(); ++i) {
-    const power_manager::PowerSupplyProperties_PowerSource& power_source_in =
-        proto.available_external_power_source(i);
-    api::system_power_source::PowerSourceInfo power_source_out;
-
-    power_source_out.type =
-        power_source_in.has_type()
-            ? PowerSourceTypeFromProtoValue(power_source_in.type())
-            : api::system_power_source::POWER_SOURCE_TYPE_UNKNOWN;
-
-    if (power_source_in.has_max_power()) {
-      // Round to two significant digits for privacy reasons, to reduce the risk
-      // of finger-printing.
-      power_source_out.max_power =
-          RoundDownToTwoSignificantDigits(power_source_in.max_power());
-    }
-
-    power_source_out.active =
-        external_power_source_id.has_value() &&
-        external_power_source_id.value() == power_source_in.id();
-
-    power_sources.push_back(std::move(power_source_out));
-  }
-
-  return power_sources;
-}
-
-}  // namespace
-
-// static
-BrowserContextKeyedAPIFactory<SystemPowerSourceAPI>*
-SystemPowerSourceAPI::GetFactoryInstance() {
-  static base::NoDestructor<BrowserContextKeyedAPIFactory<SystemPowerSourceAPI>>
-      instance;
-  return instance.get();
-}
-
-SystemPowerSourceAPI::SystemPowerSourceAPI(content::BrowserContext* context)
-    : browser_context_(context), power_manager_observer_(this) {
-  power_manager_observer_.Add(chromeos::PowerManagerClient::Get());
-}
-
-SystemPowerSourceAPI::~SystemPowerSourceAPI() = default;
-
-void SystemPowerSourceAPI::PowerChanged(
-    const power_manager::PowerSupplyProperties& proto) {
-  EventRouter* event_router = EventRouter::Get(browser_context_);
-  if (!event_router)
-    return;
-
-  std::unique_ptr<base::ListValue> args =
-      api::system_power_source::OnPowerChanged::Create(
-          PowerSourceInfoVectorFromProtoValue(proto));
-
-  auto event = std::make_unique<Event>(
-      events::SYSTEM_POWER_SOURCE_ONPOWERCHANGED,
-      api::system_power_source::OnPowerChanged::kEventName, std::move(args));
-  event_router->BroadcastEvent(std::move(event));
-}
-
-SystemPowerSourceGetPowerSourceInfoFunction::
-    SystemPowerSourceGetPowerSourceInfoFunction() = default;
-
-SystemPowerSourceGetPowerSourceInfoFunction::
-    ~SystemPowerSourceGetPowerSourceInfoFunction() = default;
-
-ExtensionFunction::ResponseAction
-SystemPowerSourceGetPowerSourceInfoFunction::Run() {
-  const base::Optional<power_manager::PowerSupplyProperties>&
-      power_supply_properties =
-          chromeos::PowerManagerClient::Get()->GetLastStatus();
-
-  if (!power_supply_properties.has_value())
-    return RespondNow(NoArguments());
-
-  return RespondNow(ArgumentList(
-      api::system_power_source::GetPowerSourceInfo::Results::Create(
-          PowerSourceInfoVectorFromProtoValue(*power_supply_properties))));
-}
-
-SystemPowerSourceRequestStatusUpdateFunction::
-    SystemPowerSourceRequestStatusUpdateFunction() = default;
-
-SystemPowerSourceRequestStatusUpdateFunction::
-    ~SystemPowerSourceRequestStatusUpdateFunction() = default;
-
-ExtensionFunction::ResponseAction
-SystemPowerSourceRequestStatusUpdateFunction::Run() {
-  chromeos::PowerManagerClient::Get()->RequestStatusUpdate();
-  return RespondNow(NoArguments());
-}
-
-}  // namespace extensions
diff --git a/extensions/browser/api/system_power_source/system_power_source_api.h b/extensions/browser/api/system_power_source/system_power_source_api.h
deleted file mode 100644
index 0ea3474..0000000
--- a/extensions/browser/api/system_power_source/system_power_source_api.h
+++ /dev/null
@@ -1,78 +0,0 @@
-// Copyright 2018 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 EXTENSIONS_BROWSER_API_SYSTEM_POWER_SOURCE_SYSTEM_POWER_SOURCE_API_H_
-#define EXTENSIONS_BROWSER_API_SYSTEM_POWER_SOURCE_SYSTEM_POWER_SOURCE_API_H_
-
-#include "base/scoped_observer.h"
-#include "chromeos/dbus/power/power_manager_client.h"
-#include "extensions/browser/browser_context_keyed_api_factory.h"
-#include "extensions/browser/extension_function.h"
-#include "extensions/browser/extension_function_histogram_value.h"
-
-namespace extensions {
-
-class SystemPowerSourceAPI : public BrowserContextKeyedAPI,
-                             public chromeos::PowerManagerClient::Observer {
- public:
-  explicit SystemPowerSourceAPI(content::BrowserContext* context);
-  ~SystemPowerSourceAPI() override;
-
-  // BrowserContextKeyedAPI implementation.
-  static BrowserContextKeyedAPIFactory<SystemPowerSourceAPI>*
-  GetFactoryInstance();
-
- private:
-  friend class BrowserContextKeyedAPIFactory<SystemPowerSourceAPI>;
-
-  // BrowserContextKeyedAPI implementation.
-  static const char* service_name() { return "SystemPowerSourceAPI"; }
-  static const bool kServiceIsNULLWhileTesting = true;
-
-  // Overridden from PowerManagerClient::Observer.
-  void PowerChanged(const power_manager::PowerSupplyProperties& proto) override;
-
-  content::BrowserContext* const browser_context_;
-  ScopedObserver<chromeos::PowerManagerClient,
-                 chromeos::PowerManagerClient::Observer>
-      power_manager_observer_;
-
-  DISALLOW_COPY_AND_ASSIGN(SystemPowerSourceAPI);
-};
-
-class SystemPowerSourceGetPowerSourceInfoFunction : public ExtensionFunction {
- public:
-  SystemPowerSourceGetPowerSourceInfoFunction();
-
-  DECLARE_EXTENSION_FUNCTION("system.powerSource.getPowerSourceInfo",
-                             SYSTEM_POWER_SOURCE_GETPOWERSOURCEINFO)
-
- protected:
-  ~SystemPowerSourceGetPowerSourceInfoFunction() override;
-
-  ResponseAction Run() override;
-
- private:
-  DISALLOW_COPY_AND_ASSIGN(SystemPowerSourceGetPowerSourceInfoFunction);
-};
-
-class SystemPowerSourceRequestStatusUpdateFunction : public ExtensionFunction {
- public:
-  SystemPowerSourceRequestStatusUpdateFunction();
-
-  DECLARE_EXTENSION_FUNCTION("system.powerSource.requestStatusUpdate",
-                             SYSTEM_POWER_SOURCE_REQUESTSTATUSUPDATE)
-
- protected:
-  ~SystemPowerSourceRequestStatusUpdateFunction() override;
-
-  ResponseAction Run() override;
-
- private:
-  DISALLOW_COPY_AND_ASSIGN(SystemPowerSourceRequestStatusUpdateFunction);
-};
-
-}  // namespace extensions
-
-#endif  // EXTENSIONS_BROWSER_API_SYSTEM_POWER_SOURCE_SYSTEM_POWER_SOURCE_API_H_
diff --git a/extensions/browser/api/system_power_source/system_power_source_api_unittest.cc b/extensions/browser/api/system_power_source/system_power_source_api_unittest.cc
deleted file mode 100644
index c7605ed..0000000
--- a/extensions/browser/api/system_power_source/system_power_source_api_unittest.cc
+++ /dev/null
@@ -1,397 +0,0 @@
-// Copyright 2018 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 <limits>
-
-#include "base/bind.h"
-#include "chromeos/dbus/power/fake_power_manager_client.h"
-#include "extensions/browser/api/system_power_source/system_power_source_api.h"
-#include "extensions/browser/api_test_utils.h"
-#include "extensions/browser/api_unittest.h"
-#include "extensions/browser/event_router.h"
-#include "extensions/browser/event_router_factory.h"
-#include "extensions/common/api/system_power_source.h"
-#include "extensions/common/extension_builder.h"
-
-using extensions::api::system_power_source::PowerSourceInfo;
-using extensions::api_test_utils::RunFunctionAndReturnSingleResult;
-namespace power_source_api = extensions::api::system_power_source;
-
-namespace extensions {
-
-namespace {
-
-class SystemPowerSourceApiUnitTest : public ApiUnitTest {
- public:
-  SystemPowerSourceApiUnitTest() = default;
-  ~SystemPowerSourceApiUnitTest() override = default;
-
-  void SetUp() override {
-    ApiUnitTest::SetUp();
-    chromeos::PowerManagerClient::InitializeFake();
-  }
-
-  void TearDown() override {
-    chromeos::PowerManagerClient::Shutdown();
-    ApiUnitTest::TearDown();
-  }
-
-  std::unique_ptr<base::Value> RunGetPowerSourceInfoFunction() {
-    scoped_refptr<SystemPowerSourceGetPowerSourceInfoFunction>
-        get_power_source_info_function(
-            new SystemPowerSourceGetPowerSourceInfoFunction());
-
-    get_power_source_info_function->set_extension(extension());
-    get_power_source_info_function->set_has_callback(true);
-
-    return RunFunctionAndReturnSingleResult(
-        get_power_source_info_function.get(), "[]", browser_context());
-  }
-
-  std::unique_ptr<base::Value> RunRequestStatusUpdateFunction() {
-    scoped_refptr<SystemPowerSourceRequestStatusUpdateFunction>
-        request_status_update_function(
-            new SystemPowerSourceRequestStatusUpdateFunction());
-
-    request_status_update_function->set_extension(extension());
-
-    return RunFunctionAndReturnSingleResult(
-        request_status_update_function.get(), "[]", browser_context());
-  }
-
-  chromeos::FakePowerManagerClient* power_manager_client() {
-    return chromeos::FakePowerManagerClient::Get();
-  }
-
- private:
-  DISALLOW_COPY_AND_ASSIGN(SystemPowerSourceApiUnitTest);
-};
-
-class TestEventRouter : public EventRouter {
- public:
-  explicit TestEventRouter(content::BrowserContext* context)
-      : EventRouter(context, nullptr) {}
-  ~TestEventRouter() override = default;
-
-  void BroadcastEvent(std::unique_ptr<Event> event) override {
-    if (event->event_name !=
-        api::system_power_source::OnPowerChanged::kEventName) {
-      return;
-    }
-    ASSERT_TRUE(event->event_args);
-    ASSERT_EQ(1u, event->event_args->GetList().size());
-    power_source_info_.emplace_back(event->event_args->GetList()[0].Clone());
-  }
-
-  const std::vector<base::Value>& power_source_info() const {
-    return power_source_info_;
-  }
-
-  void clear_power_source_info() { power_source_info_.clear(); }
-
- private:
-  std::vector<base::Value> power_source_info_;
-
-  DISALLOW_COPY_AND_ASSIGN(TestEventRouter);
-};
-
-std::unique_ptr<KeyedService> TestEventRouterFactoryFunction(
-    content::BrowserContext* context) {
-  return std::make_unique<TestEventRouter>(context);
-}
-
-power_manager::PowerSupplyProperties MakePowerSupplyProperties(
-    const base::Optional<std::string>& external_power_source_id,
-    const std::vector<power_manager::PowerSupplyProperties_PowerSource>&
-        power_sources) {
-  power_manager::PowerSupplyProperties props;
-  if (external_power_source_id)
-    props.set_external_power_source_id(*external_power_source_id);
-
-  for (const auto& power_source : power_sources)
-    *props.add_available_external_power_source() = power_source;
-
-  return props;
-}
-
-power_manager::PowerSupplyProperties_PowerSource MakePowerSource(
-    const std::string& id,
-    power_manager::PowerSupplyProperties_PowerSource_Type type,
-    double max_power) {
-  power_manager::PowerSupplyProperties_PowerSource power_source;
-  power_source.set_id(id);
-  power_source.set_type(type);
-  power_source.set_max_power(max_power);
-  return power_source;
-}
-
-}  // namespace
-
-// Barrel jack connected
-TEST_F(SystemPowerSourceApiUnitTest, GetPowerSourceAc) {
-  power_manager_client()->UpdatePowerProperties(MakePowerSupplyProperties(
-      "AC",
-      {MakePowerSource(
-          "AC", power_manager::PowerSupplyProperties_PowerSource_Type_MAINS,
-          0)}));
-
-  std::unique_ptr<base::Value> result = RunGetPowerSourceInfoFunction();
-  ASSERT_TRUE(result);
-
-  std::unique_ptr<base::Value> expected_result =
-      ListBuilder()
-          .Append(DictionaryBuilder()
-                      .Set("type", "mains")
-                      .Set("active", true)
-                      .Build())
-          .Build();
-
-  EXPECT_EQ(*expected_result, *result);
-}
-
-// USB-C PD charger connected
-TEST_F(SystemPowerSourceApiUnitTest, GetPowerSourceUsb) {
-  power_manager_client()->UpdatePowerProperties(MakePowerSupplyProperties(
-      "CROS_USB_PD_CHARGER0",
-      {{MakePowerSource(
-          "CROS_USB_PD_CHARGER0",
-          power_manager::PowerSupplyProperties_PowerSource_Type_USB_C, 60)}}));
-
-  std::unique_ptr<base::Value> result = RunGetPowerSourceInfoFunction();
-  ASSERT_TRUE(result);
-
-  std::unique_ptr<base::Value> expected_result =
-      ListBuilder()
-          .Append(DictionaryBuilder()
-                      .Set("type", "usb")
-                      .Set("maxPower", 60.0)
-                      .Set("active", true)
-                      .Build())
-          .Build();
-
-  EXPECT_EQ(*expected_result, *result);
-}
-
-// Barrel Jack + USB-C PD charger connected; Barrel Jack active
-TEST_F(SystemPowerSourceApiUnitTest, GetPowerSourceAcActiveAndUsbInactive) {
-  power_manager_client()->UpdatePowerProperties(MakePowerSupplyProperties(
-      "AC",
-      {{MakePowerSource(
-            "AC", power_manager::PowerSupplyProperties_PowerSource_Type_MAINS,
-            0),
-        MakePowerSource(
-            "CROS_USB_PD_CHARGER0",
-            power_manager::PowerSupplyProperties_PowerSource_Type_USB_C,
-            60)}}));
-
-  std::unique_ptr<base::Value> result = RunGetPowerSourceInfoFunction();
-  ASSERT_TRUE(result);
-
-  std::unique_ptr<base::Value> expected_result =
-      ListBuilder()
-          .Append(DictionaryBuilder()
-                      .Set("type", "mains")
-                      .Set("active", true)
-                      .Build())
-          .Append(DictionaryBuilder()
-                      .Set("type", "usb")
-                      .Set("maxPower", 60.0)
-                      .Set("active", false)
-                      .Build())
-          .Build();
-
-  EXPECT_EQ(*expected_result, *result);
-}
-
-// Barrel Jack + USB-C PD charger connected; USB-C charger active
-TEST_F(SystemPowerSourceApiUnitTest, GetPowerSourceAcInactiveAndUsbActive) {
-  power_manager_client()->UpdatePowerProperties(MakePowerSupplyProperties(
-      "CROS_USB_PD_CHARGER0",
-      {{MakePowerSource(
-            "AC", power_manager::PowerSupplyProperties_PowerSource_Type_MAINS,
-            0),
-        MakePowerSource(
-            "CROS_USB_PD_CHARGER0",
-            power_manager::PowerSupplyProperties_PowerSource_Type_USB_C,
-            60)}}));
-
-  std::unique_ptr<base::Value> result = RunGetPowerSourceInfoFunction();
-  ASSERT_TRUE(result);
-
-  std::unique_ptr<base::Value> expected_result =
-      ListBuilder()
-          .Append(DictionaryBuilder()
-                      .Set("type", "mains")
-                      .Set("active", false)
-                      .Build())
-          .Append(DictionaryBuilder()
-                      .Set("type", "usb")
-                      .Set("maxPower", 60.0)
-                      .Set("active", true)
-                      .Build())
-          .Build();
-
-  EXPECT_EQ(*expected_result, *result);
-}
-
-// Barrel Jack + USB-C PD charger connected; neither active
-TEST_F(SystemPowerSourceApiUnitTest, GetPowerSourceNoneActive) {
-  power_manager_client()->UpdatePowerProperties(MakePowerSupplyProperties(
-      base::nullopt,
-      {{MakePowerSource(
-            "AC", power_manager::PowerSupplyProperties_PowerSource_Type_MAINS,
-            0),
-        MakePowerSource(
-            "CROS_USB_PD_CHARGER0",
-            power_manager::PowerSupplyProperties_PowerSource_Type_USB_C,
-            60)}}));
-
-  std::unique_ptr<base::Value> result = RunGetPowerSourceInfoFunction();
-  ASSERT_TRUE(result);
-
-  std::unique_ptr<base::Value> expected_result =
-      ListBuilder()
-          .Append(DictionaryBuilder()
-                      .Set("type", "mains")
-                      .Set("active", false)
-                      .Build())
-          .Append(DictionaryBuilder()
-                      .Set("type", "usb")
-                      .Set("maxPower", 60.0)
-                      .Set("active", false)
-                      .Build())
-          .Build();
-
-  EXPECT_EQ(*expected_result, *result);
-}
-
-// Connected USB chargers with fractional max power gets rounded down to
-// two significant digits (for privacy reasons, to reduce the risk of
-// finger-printing).  Chargers with a max power that is not a normal value
-// larger than zero are reported as not having a max power value.
-TEST_F(SystemPowerSourceApiUnitTest, GetPowerSourceRounding) {
-  power_manager_client()->UpdatePowerProperties(MakePowerSupplyProperties(
-      "CROS_USB_PD_CHARGER0",
-      {{MakePowerSource(
-            "CROS_USB_PD_CHARGER0",
-            power_manager::PowerSupplyProperties_PowerSource_Type_USB_C, 111.0),
-        MakePowerSource(
-            "CROS_USB_PD_CHARGER1",
-            power_manager::PowerSupplyProperties_PowerSource_Type_USB_C, 11.1),
-        MakePowerSource(
-            "CROS_USB_PD_CHARGER2",
-            power_manager::PowerSupplyProperties_PowerSource_Type_USB_C, 1.11),
-        MakePowerSource(
-            "CROS_USB_PD_CHARGER3",
-            power_manager::PowerSupplyProperties_PowerSource_Type_USB_C, 0.111),
-        MakePowerSource(
-            "CROS_USB_PD_CHARGER4",
-            power_manager::PowerSupplyProperties_PowerSource_Type_USB_C, -1),
-        MakePowerSource(
-            "CROS_USB_PD_CHARGER5",
-            power_manager::PowerSupplyProperties_PowerSource_Type_USB_C,
-            std::nan("")),
-        MakePowerSource(
-            "CROS_USB_PD_CHARGER6",
-            power_manager::PowerSupplyProperties_PowerSource_Type_USB_C,
-            std::numeric_limits<double>::infinity())}}));
-
-  std::unique_ptr<base::Value> result = RunGetPowerSourceInfoFunction();
-  ASSERT_TRUE(result);
-
-  std::unique_ptr<base::Value> expected_result =
-      ListBuilder()
-          .Append(DictionaryBuilder()
-                      .Set("type", "usb")
-                      .Set("maxPower", 110.0)
-                      .Set("active", true)
-                      .Build())
-          .Append(DictionaryBuilder()
-                      .Set("type", "usb")
-                      .Set("maxPower", 11.0)
-                      .Set("active", false)
-                      .Build())
-          .Append(DictionaryBuilder()
-                      .Set("type", "usb")
-                      .Set("maxPower", 1.1)
-                      .Set("active", false)
-                      .Build())
-          .Append(DictionaryBuilder()
-                      .Set("type", "usb")
-                      .Set("maxPower", 0.11)
-                      .Set("active", false)
-                      .Build())
-          .Append(DictionaryBuilder()
-                      .Set("type", "usb")
-                      .Set("active", false)
-                      .Build())
-          .Append(DictionaryBuilder()
-                      .Set("type", "usb")
-                      .Set("active", false)
-                      .Build())
-          .Append(DictionaryBuilder()
-                      .Set("type", "usb")
-                      .Set("active", false)
-                      .Build())
-          .Build();
-
-  EXPECT_EQ(*expected_result, *result);
-}
-
-TEST_F(SystemPowerSourceApiUnitTest, OnPowerChangedEvent) {
-  TestEventRouter* event_router = static_cast<TestEventRouter*>(
-      EventRouterFactory::GetInstance()->SetTestingFactoryAndUse(
-          browser_context(),
-          base::BindRepeating(&TestEventRouterFactoryFunction)));
-  SystemPowerSourceAPI system_power_source_api(browser_context());
-
-  power_manager_client()->UpdatePowerProperties(MakePowerSupplyProperties(
-      "AC",
-      {MakePowerSource(
-          "AC", power_manager::PowerSupplyProperties_PowerSource_Type_MAINS,
-          0)}));
-
-  std::unique_ptr<base::Value> expected_result =
-      ListBuilder()
-          .Append(DictionaryBuilder()
-                      .Set("type", "mains")
-                      .Set("active", true)
-                      .Build())
-          .Build();
-
-  ASSERT_EQ(1U, event_router->power_source_info().size());
-  EXPECT_EQ(*expected_result, event_router->power_source_info()[0]);
-}
-
-TEST_F(SystemPowerSourceApiUnitTest, RequestStatusUpdate) {
-  TestEventRouter* event_router = static_cast<TestEventRouter*>(
-      EventRouterFactory::GetInstance()->SetTestingFactoryAndUse(
-          browser_context(),
-          base::BindRepeating(&TestEventRouterFactoryFunction)));
-  SystemPowerSourceAPI system_power_source_api(browser_context());
-
-  power_manager_client()->UpdatePowerProperties(MakePowerSupplyProperties(
-      "AC",
-      {MakePowerSource(
-          "AC", power_manager::PowerSupplyProperties_PowerSource_Type_MAINS,
-          0)}));
-
-  event_router->clear_power_source_info();
-
-  RunRequestStatusUpdateFunction();
-  base::RunLoop().RunUntilIdle();
-
-  std::unique_ptr<base::Value> expected_result =
-      ListBuilder()
-          .Append(DictionaryBuilder()
-                      .Set("type", "mains")
-                      .Set("active", true)
-                      .Build())
-          .Build();
-
-  ASSERT_EQ(1U, event_router->power_source_info().size());
-  EXPECT_EQ(*expected_result, event_router->power_source_info()[0]);
-}
-
-}  // namespace extensions
diff --git a/extensions/browser/api/system_power_source/system_power_source_apitest.cc b/extensions/browser/api/system_power_source/system_power_source_apitest.cc
deleted file mode 100644
index e937a20..0000000
--- a/extensions/browser/api/system_power_source/system_power_source_apitest.cc
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2018 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 <memory>
-#include <utility>
-
-#include "base/macros.h"
-#include "chromeos/dbus/power/fake_power_manager_client.h"
-#include "chromeos/dbus/power_manager/power_supply_properties.pb.h"
-#include "extensions/common/features/feature_session_type.h"
-#include "extensions/common/mojom/feature_session_type.mojom.h"
-#include "extensions/shell/test/shell_apitest.h"
-#include "extensions/test/result_catcher.h"
-
-namespace extensions {
-
-namespace {
-
-using SystemPowerSourceApiTest = ShellApiTest;
-
-}  // namespace
-
-IN_PROC_BROWSER_TEST_F(SystemPowerSourceApiTest, TestAllApiFunctions) {
-  std::unique_ptr<base::AutoReset<mojom::FeatureSessionType>> session_type =
-      ScopedCurrentFeatureSessionType(mojom::FeatureSessionType::kKiosk);
-
-  // These values must match the assertions in
-  // extensions/test/data/api_test/system_power_source/api/background.js.
-  power_manager::PowerSupplyProperties_PowerSource power_source;
-  power_source.set_id("AC");
-  power_source.set_type(
-      power_manager::PowerSupplyProperties_PowerSource_Type_MAINS);
-  power_source.set_max_power(0);
-
-  power_manager::PowerSupplyProperties props;
-  props.set_external_power_source_id("AC");
-  *props.add_available_external_power_source() = power_source;
-
-  chromeos::FakePowerManagerClient::Get()->UpdatePowerProperties(props);
-
-  EXPECT_TRUE(RunAppTest("api_test/system_power_source/api"));
-}
-
-}  // namespace extensions
diff --git a/extensions/browser/browser_context_keyed_service_factories.cc b/extensions/browser/browser_context_keyed_service_factories.cc
index 6f0475c..1647fa88 100644
--- a/extensions/browser/browser_context_keyed_service_factories.cc
+++ b/extensions/browser/browser_context_keyed_service_factories.cc
@@ -48,16 +48,11 @@
 
 #if BUILDFLAG(IS_CHROMEOS_ASH)
 #include "extensions/browser/api/clipboard/clipboard_api.h"
-#include "extensions/browser/api/system_power_source/system_power_source_api.h"
 #include "extensions/browser/api/virtual_keyboard_private/virtual_keyboard_private_api.h"
 #include "extensions/browser/api/vpn_provider/vpn_service_factory.h"
 #include "extensions/browser/api/webcam_private/webcam_private_api.h"
 #endif
 
-#if BUILDFLAG(IS_CHROMEOS_ASH)
-#include "extensions/browser/api/system_power_source/system_power_source_api.h"
-#endif
-
 namespace extensions {
 
 void EnsureBrowserContextKeyedServiceFactoriesBuilt() {
@@ -103,9 +98,6 @@
   RuntimeAPI::GetFactoryInstance();
   StorageFrontend::GetFactoryInstance();
   SystemInfoAPI::GetFactoryInstance();
-#if BUILDFLAG(IS_CHROMEOS_ASH)
-  SystemPowerSourceAPI::GetFactoryInstance();
-#endif
   UpdateServiceFactory::GetInstance();
   UsbDeviceManager::GetFactoryInstance();
 #if BUILDFLAG(IS_CHROMEOS_ASH)
diff --git a/extensions/browser/extension_event_histogram_value.h b/extensions/browser/extension_event_histogram_value.h
index a251b066..9763a6d 100644
--- a/extensions/browser/extension_event_histogram_value.h
+++ b/extensions/browser/extension_event_histogram_value.h
@@ -442,7 +442,7 @@
   SAFE_BROWSING_PRIVATE_ON_SECURITY_INTERSTITIAL_PROCEEDED = 420,
   ACCESSIBILITY_PRIVATE_ON_SELECT_TO_SPEAK_STATE_CHANGE_REQUESTED = 421,
   INPUT_METHOD_PRIVATE_ON_FOCUS = 422,
-  SYSTEM_POWER_SOURCE_ONPOWERCHANGED = 423,
+  DELETED_SYSTEM_POWER_SOURCE_ONPOWERCHANGED = 423,
   WEB_REQUEST_ON_ACTION_IGNORED = 424,
   ARC_APPS_PRIVATE_ON_INSTALLED = 425,
   FILE_MANAGER_PRIVATE_ON_CROSTINI_CHANGED = 426,
diff --git a/extensions/browser/extension_function_histogram_value.h b/extensions/browser/extension_function_histogram_value.h
index c11d02b..9056ec1 100644
--- a/extensions/browser/extension_function_histogram_value.h
+++ b/extensions/browser/extension_function_histogram_value.h
@@ -1319,8 +1319,8 @@
   USERSPRIVATE_GETCURRENTUSER = 1256,
   WALLPAPERPRIVATE_GETSURPRISEMEIMAGE = 1257,
   VIRTUALKEYBOARDPRIVATE_SETOCCLUDEDBOUNDS = 1258,
-  SYSTEM_POWER_SOURCE_GETPOWERSOURCEINFO = 1259,
-  SYSTEM_POWER_SOURCE_REQUESTSTATUSUPDATE = 1260,
+  DELETED_SYSTEM_POWER_SOURCE_GETPOWERSOURCEINFO = 1259,
+  DELETED_SYSTEM_POWER_SOURCE_REQUESTSTATUSUPDATE = 1260,
   INPUTMETHODPRIVATE_GETSURROUNDINGTEXT = 1261,
   USERSPRIVATE_GETLOGINSTATUS = 1262,
   FILEMANAGERPRIVATEINTERNAL_INSTALLLINUXPACKAGE = 1263,
diff --git a/extensions/common/api/_api_features.json b/extensions/common/api/_api_features.json
index 3fb6dcf..11b93cb9 100644
--- a/extensions/common/api/_api_features.json
+++ b/extensions/common/api/_api_features.json
@@ -565,10 +565,6 @@
     "dependencies": ["permission:system.network"],
     "contexts": ["blessed_extension"]
   },
-  "system.powerSource": {
-    "dependencies": ["permission:system.powerSource"],
-    "contexts": ["blessed_extension"]
-  },
   "system.storage": {
     "dependencies": ["permission:system.storage"],
     "contexts": ["blessed_extension"]
diff --git a/extensions/common/api/_permission_features.json b/extensions/common/api/_permission_features.json
index 77163f2..e513c56 100644
--- a/extensions/common/api/_permission_features.json
+++ b/extensions/common/api/_permission_features.json
@@ -633,12 +633,6 @@
       "whitelist": ["B44D08FD98F1523ED5837D78D0A606EA9D6206E5"]  // Web Store
     }
   ],
-  "system.powerSource": {
-    "channel": "stable",
-    "extension_types": ["platform_app"],
-    "platforms": ["chromeos"],
-    "session_types": ["kiosk"]
-  },
   "u2fDevices": {
     "channel": "stable",
     "extension_types": ["extension", "platform_app"],
diff --git a/extensions/common/api/schema.gni b/extensions/common/api/schema.gni
index 6cbdf780..aaab96e8 100644
--- a/extensions/common/api/schema.gni
+++ b/extensions/common/api/schema.gni
@@ -51,7 +51,6 @@
   "system_display.idl",
   "system_memory.idl",
   "system_network.idl",
-  "system_power_source.idl",
   "system_storage.idl",
   "test.json",
   "usb.idl",
diff --git a/extensions/common/api/system_power_source.idl b/extensions/common/api/system_power_source.idl
deleted file mode 100644
index 012db29..0000000
--- a/extensions/common/api/system_power_source.idl
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2018 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.
-
-// The <code>chrome.system.powerSource</code> API allows Chrome Kiosk Apps to
-// query the state of connected power sources.
-[platforms=("chromeos")]
-namespace system.powerSource {
-  enum PowerSourceType {
-    // Unspecified type.
-    unknown,
-
-    // Dedicated charger. Typically single-purpose and non-USB (e.g. barrel
-    // jack plugs).
-    mains,
-
-    // USB charger, including both low-power Type-A chargers and high-power
-    // Type-C chargers using USB Power Delivery.
-    usb
-  };
-
-  dictionary PowerSourceInfo {
-    // Type of power source.
-    PowerSourceType type;
-
-    // Maximum power this source is capable of delivering if known. Reported in
-    // watts, rounded to two significant digits.
-    double? maxPower;
-
-    // Whether this power source is connected to the device.
-    boolean active;
-  };
-
-  callback PowerSourceInfoCallback =
-      void(optional PowerSourceInfo[] powerSourceInfo);
-
-  interface Functions {
-    // Requests information on attached power sources.
-    // |callback|: The callback to invoke with the results or
-    // undefined if the power source information is not known.
-    static void getPowerSourceInfo(PowerSourceInfoCallback callback);
-
-    // Requests a power source status update. Resulting power source status
-    // updates are observable using $(ref:onPowerChanged).
-    static void requestStatusUpdate();
-  };
-
-  interface Events {
-    // Event for changes in the set of connected power sources.
-    static void onPowerChanged(PowerSourceInfo[] powerSourceInfo);
-  };
-};
-
diff --git a/extensions/common/permissions/api_permission.h b/extensions/common/permissions/api_permission.h
index 08c7358..04a2e94c 100644
--- a/extensions/common/permissions/api_permission.h
+++ b/extensions/common/permissions/api_permission.h
@@ -255,7 +255,7 @@
     kCecPrivate = 211,
     kSafeBrowsingPrivate = 212,
     kFileSystemRequestDownloads = 213,
-    kSystemPowerSource = 214,
+    kDeleted_SystemPowerSource = 214,
     kArcAppsPrivate = 215,
     kEnterpriseHardwarePlatform = 216,
     kLoginScreenUi = 217,
diff --git a/extensions/common/permissions/extensions_api_permissions.cc b/extensions/common/permissions/extensions_api_permissions.cc
index 89acd1b..c0969a0 100644
--- a/extensions/common/permissions/extensions_api_permissions.cc
+++ b/extensions/common/permissions/extensions_api_permissions.cc
@@ -130,8 +130,6 @@
      APIPermissionInfo::kFlagDoesNotRequireManagedSessionFullLoginWarning},
     {APIPermission::kSystemDisplay, "system.display",
      APIPermissionInfo::kFlagDoesNotRequireManagedSessionFullLoginWarning},
-    {APIPermission::kSystemPowerSource, "system.powerSource",
-     APIPermissionInfo::kFlagDoesNotRequireManagedSessionFullLoginWarning},
     {APIPermission::kSystemStorage, "system.storage"},
     {APIPermission::kU2fDevices, "u2fDevices"},
     {APIPermission::kUnlimitedStorage, "unlimitedStorage",
diff --git a/extensions/test/data/api_test/system_power_source/api/background.js b/extensions/test/data/api_test/system_power_source/api/background.js
deleted file mode 100644
index 21efc07..0000000
--- a/extensions/test/data/api_test/system_power_source/api/background.js
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright 2018 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.
-
-chrome.test.runTests([
-  function getPowerSourceInfo() {
-    chrome.system.powerSource.getPowerSourceInfo(
-        chrome.test.callbackPass(info => {
-          chrome.test.assertEq([{active: true, type: 'mains'}], info);
-        }));
-  },
-
-  function onPowerChanged() {
-    chrome.test.listenOnce(chrome.system.powerSource.onPowerChanged, info => {
-      chrome.test.assertEq([{active: true, type: 'mains'}], info);
-    });
-    chrome.system.powerSource.requestStatusUpdate();
-  },
-]);
diff --git a/extensions/test/data/api_test/system_power_source/api/manifest.json b/extensions/test/data/api_test/system_power_source/api/manifest.json
deleted file mode 100644
index b6c4177..0000000
--- a/extensions/test/data/api_test/system_power_source/api/manifest.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-  "name": "chrome.system.powerSource",
-  "manifest_version": 2,
-  "version": "0.1",
-  "description": "end-to-end browser tests for chrome.system.powerSource API",
-  "app": {
-    "background": {
-      "scripts": ["background.js"]
-    }
-  },
-  "permissions": [
-    "system.powerSource"
-  ],
-  "kiosk_enabled": true
-}
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 d94fba5..5478a29 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 @@
-36b5262321411db1fde3fef494c819dff7ee1bce
\ No newline at end of file
+434981e5bf7a57af9ec13c83c8c170e796f35b76
\ 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 94c3dd1..5eaaaf13 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 @@
-e6219d58d76eabdcfde3a4e4a64821cbbac00d0f
\ No newline at end of file
+c3817b8563e0ff5507885760231c6f6eb3c39e5d
\ 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 1dedc26c..da5e71f 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 @@
-3c0d9708365385b6badbb13255d6cb8fab95aa3d
\ No newline at end of file
+81af11f1b02de2e814a74f69bfe56b8aaddeeb13
\ 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 0923327b..23d363b 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 @@
-c3c4931568b06c2fe81a9f127a66aa68dadc9eef
\ No newline at end of file
+0198468567faf84f643b63abbd05374860f02801
\ 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 4ccad41..f7ec661b 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 @@
-701a0e408c9ca8f312881e5cc1f7600498e72e50
\ No newline at end of file
+e110171b278311715c8862307af140b5b3ad5e83
\ 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 878622e8..2fd1b97 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 @@
-2adf62f62e95e284449fb069e432a3cb9f93d3e1
\ No newline at end of file
+b8f2de566cf8dc6c35de2488fd0ec8cdf31de335
\ 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 851a3da..8b16b6c 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 @@
-603e8ad156d67e9c8bce74c1b4626009c002912a
\ No newline at end of file
+da5ccce882cf15cc6a25e43fab4240ccb9128caf
\ 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 3114cce..65a9b2d 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 @@
-bf49209ebc31fd09f8fdde046c93af91d0258acf
\ No newline at end of file
+30acbacaf189ed772b097c408f0ba4f3fd6d5f36
\ No newline at end of file
diff --git a/testing/buildbot/chromium.android.fyi.json b/testing/buildbot/chromium.android.fyi.json
index 695dd49..90bc1d2 100644
--- a/testing/buildbot/chromium.android.fyi.json
+++ b/testing/buildbot/chromium.android.fyi.json
@@ -240,11 +240,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.128"
+            "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.130"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.128",
+        "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.130",
         "resultdb": {
           "enable": true
         },
@@ -254,7 +254,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M87",
-              "revision": "version:87.0.4280.128"
+              "revision": "version:87.0.4280.130"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -317,11 +317,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.62"
+            "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.64"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.62",
+        "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.64",
         "resultdb": {
           "enable": true
         },
@@ -331,7 +331,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M88",
-              "revision": "version:88.0.4324.62"
+              "revision": "version:88.0.4324.64"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -394,11 +394,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.128"
+            "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.130"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.128",
+        "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.130",
         "resultdb": {
           "enable": true
         },
@@ -408,7 +408,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M87",
-              "revision": "version:87.0.4280.128"
+              "revision": "version:87.0.4280.130"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -471,11 +471,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.62"
+            "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.64"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.62",
+        "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.64",
         "resultdb": {
           "enable": true
         },
@@ -485,7 +485,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M88",
-              "revision": "version:88.0.4324.62"
+              "revision": "version:88.0.4324.64"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -769,11 +769,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.128"
+            "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.130"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.128",
+        "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.130",
         "resultdb": {
           "enable": true
         },
@@ -783,7 +783,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M87",
-              "revision": "version:87.0.4280.128"
+              "revision": "version:87.0.4280.130"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -846,11 +846,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.62"
+            "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.64"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.62",
+        "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.64",
         "resultdb": {
           "enable": true
         },
@@ -860,7 +860,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M88",
-              "revision": "version:88.0.4324.62"
+              "revision": "version:88.0.4324.64"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -923,11 +923,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.128"
+            "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.130"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.128",
+        "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.130",
         "resultdb": {
           "enable": true
         },
@@ -937,7 +937,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M87",
-              "revision": "version:87.0.4280.128"
+              "revision": "version:87.0.4280.130"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -1000,11 +1000,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.62"
+            "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.64"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.62",
+        "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.64",
         "resultdb": {
           "enable": true
         },
@@ -1014,7 +1014,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M88",
-              "revision": "version:88.0.4324.62"
+              "revision": "version:88.0.4324.64"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -1298,11 +1298,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.128"
+            "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.130"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.128",
+        "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.130",
         "resultdb": {
           "enable": true
         },
@@ -1312,7 +1312,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M87",
-              "revision": "version:87.0.4280.128"
+              "revision": "version:87.0.4280.130"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -1375,11 +1375,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.62"
+            "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.64"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.62",
+        "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.64",
         "resultdb": {
           "enable": true
         },
@@ -1389,7 +1389,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M88",
-              "revision": "version:88.0.4324.62"
+              "revision": "version:88.0.4324.64"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -1452,11 +1452,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.128"
+            "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.130"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.128",
+        "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.130",
         "resultdb": {
           "enable": true
         },
@@ -1466,7 +1466,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M87",
-              "revision": "version:87.0.4280.128"
+              "revision": "version:87.0.4280.130"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -1529,11 +1529,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.62"
+            "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.64"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.62",
+        "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.64",
         "resultdb": {
           "enable": true
         },
@@ -1543,7 +1543,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M88",
-              "revision": "version:88.0.4324.62"
+              "revision": "version:88.0.4324.64"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -1827,11 +1827,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.128"
+            "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.130"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.128",
+        "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.130",
         "resultdb": {
           "enable": true
         },
@@ -1841,7 +1841,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M87",
-              "revision": "version:87.0.4280.128"
+              "revision": "version:87.0.4280.130"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -1904,11 +1904,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.62"
+            "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.64"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.62",
+        "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.64",
         "resultdb": {
           "enable": true
         },
@@ -1918,7 +1918,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M88",
-              "revision": "version:88.0.4324.62"
+              "revision": "version:88.0.4324.64"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -1981,11 +1981,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.128"
+            "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.130"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.128",
+        "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.130",
         "resultdb": {
           "enable": true
         },
@@ -1995,7 +1995,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M87",
-              "revision": "version:87.0.4280.128"
+              "revision": "version:87.0.4280.130"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -2058,11 +2058,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.62"
+            "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.64"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.62",
+        "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.64",
         "resultdb": {
           "enable": true
         },
@@ -2072,7 +2072,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M88",
-              "revision": "version:88.0.4324.62"
+              "revision": "version:88.0.4324.64"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
diff --git a/testing/buildbot/variants.pyl b/testing/buildbot/variants.pyl
index b79d107..8105dd2 100644
--- a/testing/buildbot/variants.pyl
+++ b/testing/buildbot/variants.pyl
@@ -319,13 +319,13 @@
       '../../weblayer/browser/android/javatests/skew/expectations.txt',
       '--impl-version=88',
     ],
-    'identifier': 'Implementation Tests For 88.0.4324.62',
+    'identifier': 'Implementation Tests For 88.0.4324.64',
     'swarming': {
       'cipd_packages': [
         {
           'cipd_package': 'chromium/testing/weblayer-x86',
           'location': 'weblayer_instrumentation_test_M88',
-          'revision': 'version:88.0.4324.62',
+          'revision': 'version:88.0.4324.64',
         }
       ],
     },
@@ -342,13 +342,13 @@
       '../../weblayer/browser/android/javatests/skew/expectations.txt',
       '--impl-version=87',
     ],
-    'identifier': 'Implementation Tests For 87.0.4280.128',
+    'identifier': 'Implementation Tests For 87.0.4280.130',
     'swarming': {
       'cipd_packages': [
         {
           'cipd_package': 'chromium/testing/weblayer-x86',
           'location': 'weblayer_instrumentation_test_M87',
-          'revision': 'version:87.0.4280.128',
+          'revision': 'version:87.0.4280.130',
         }
       ],
     },
@@ -388,13 +388,13 @@
       '../../weblayer/browser/android/javatests/skew/expectations.txt',
       '--client-version=88',
     ],
-    'identifier': 'Client Tests For 88.0.4324.62',
+    'identifier': 'Client Tests For 88.0.4324.64',
     'swarming': {
       'cipd_packages': [
         {
           'cipd_package': 'chromium/testing/weblayer-x86',
           'location': 'weblayer_instrumentation_test_M88',
-          'revision': 'version:88.0.4324.62',
+          'revision': 'version:88.0.4324.64',
         }
       ],
     },
@@ -411,13 +411,13 @@
       '../../weblayer/browser/android/javatests/skew/expectations.txt',
       '--client-version=87',
     ],
-    'identifier': 'Client Tests For 87.0.4280.128',
+    'identifier': 'Client Tests For 87.0.4280.130',
     'swarming': {
       'cipd_packages': [
         {
           'cipd_package': 'chromium/testing/weblayer-x86',
           'location': 'weblayer_instrumentation_test_M87',
-          'revision': 'version:87.0.4280.128',
+          'revision': 'version:87.0.4280.130',
         }
       ],
     },
diff --git a/third_party/blink/renderer/bindings/core/v8/script_streamer.cc b/third_party/blink/renderer/bindings/core/v8/script_streamer.cc
index a62b433..b349614 100644
--- a/third_party/blink/renderer/bindings/core/v8/script_streamer.cc
+++ b/third_party/blink/renderer/bindings/core/v8/script_streamer.cc
@@ -24,6 +24,7 @@
 #include "third_party/blink/renderer/platform/loader/fetch/cached_metadata.h"
 #include "third_party/blink/renderer/platform/loader/fetch/resource.h"
 #include "third_party/blink/renderer/platform/loader/fetch/response_body_loader.h"
+#include "third_party/blink/renderer/platform/network/mime/mime_type_registry.h"
 #include "third_party/blink/renderer/platform/scheduler/public/post_cross_thread_task.h"
 #include "third_party/blink/renderer/platform/scheduler/public/thread_scheduler.h"
 #include "third_party/blink/renderer/platform/scheduler/public/worker_pool.h"
@@ -524,6 +525,16 @@
   if (!CanStartStreaming())
     return false;
 
+  // Skip non-JS modules based on the mime-type.
+  // TODO(crbug/1132413),TODO(crbug/1061857): Disable streaming for non-JS
+  // based the specific import statements.
+  if (script_resource_->GetScriptType() == mojom::blink::ScriptType::kModule &&
+      !MIMETypeRegistry::IsSupportedJavaScriptMIMEType(
+          script_resource_->GetResponse().HttpContentType())) {
+    SuppressStreaming(NotStreamingReason::kNonJavascriptModule);
+    return false;
+  }
+
   // Even if the first data chunk is small, the script can still be big enough -
   // wait until the next data chunk comes before deciding whether to start the
   // streaming.
diff --git a/third_party/blink/renderer/bindings/core/v8/script_streamer.h b/third_party/blink/renderer/bindings/core/v8/script_streamer.h
index 2275f212..714c66a 100644
--- a/third_party/blink/renderer/bindings/core/v8/script_streamer.h
+++ b/third_party/blink/renderer/bindings/core/v8/script_streamer.h
@@ -60,6 +60,7 @@
     kModuleScript,
     kNoDataPipe,
     kLoadingCancelled,
+    kNonJavascriptModule,
     kDisabledByFeatureList,
 
     // Pseudo values that should never be seen in reported metrics
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 1cb6706ab..1286921 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
@@ -272,58 +272,58 @@
                           referrer_info.ToV8HostDefinedOptions(isolate));
 
   v8::Local<v8::String> code = V8String(isolate, params.GetSourceText());
-  if (ScriptStreamer* streamer = params.GetScriptStreamer()) {
+  inspector_compile_script_event::V8CacheResult cache_result;
+  v8::MaybeLocal<v8::Module> script;
+  ScriptStreamer* streamer = params.GetScriptStreamer();
+  if (streamer) {
     // Final compile call for a streamed compilation.
     // Streaming compilation may involve use of code cache.
     // TODO(leszeks): Add compile timer to streaming compilation.
     DCHECK(streamer->IsFinished());
     DCHECK(!streamer->IsStreamingSuppressed());
-    return v8::ScriptCompiler::CompileModule(isolate->GetCurrentContext(),
-                                             streamer->Source(), code, origin);
-  }
-
-  v8::MaybeLocal<v8::Module> script;
-  inspector_compile_script_event::V8CacheResult cache_result;
-
-  switch (compile_options) {
-    case v8::ScriptCompiler::kNoCompileOptions:
-    case v8::ScriptCompiler::kEagerCompile: {
-      v8::ScriptCompiler::Source source(code, origin);
-      script = v8::ScriptCompiler::CompileModule(
-          isolate, &source, compile_options, no_cache_reason);
-      break;
-    }
-
-    case v8::ScriptCompiler::kConsumeCodeCache: {
-      // Compile a script, and consume a V8 cache that was generated previously.
-      SingleCachedMetadataHandler* cache_handler = params.CacheHandler();
-      DCHECK(cache_handler);
-      v8::ScriptCompiler::CachedData* cached_data =
-          V8CodeCache::CreateCachedData(cache_handler);
-      v8::ScriptCompiler::Source source(code, origin, cached_data);
-      script = v8::ScriptCompiler::CompileModule(
-          isolate, &source, compile_options, no_cache_reason);
-      if (cached_data->rejected) {
-        cache_handler->ClearCachedMetadata(
-            CachedMetadataHandler::kClearPersistentStorage);
-      } else if (InDiscardExperiment()) {
-        // Experimentally free code cache from memory after first use. See
-        // http://crbug.com/1045052.
-        cache_handler->ClearCachedMetadata(
-            CachedMetadataHandler::kDiscardLocally);
+    script = v8::ScriptCompiler::CompileModule(
+        isolate->GetCurrentContext(), streamer->Source(), code, origin);
+  } else {
+    switch (compile_options) {
+      case v8::ScriptCompiler::kNoCompileOptions:
+      case v8::ScriptCompiler::kEagerCompile: {
+        v8::ScriptCompiler::Source source(code, origin);
+        script = v8::ScriptCompiler::CompileModule(
+            isolate, &source, compile_options, no_cache_reason);
+        break;
       }
-      cache_result.consume_result = base::make_optional(
-          inspector_compile_script_event::V8CacheResult::ConsumeResult(
-              compile_options, cached_data->length, cached_data->rejected));
-      break;
+
+      case v8::ScriptCompiler::kConsumeCodeCache: {
+        // Compile a script, and consume a V8 cache that was generated
+        // previously.
+        SingleCachedMetadataHandler* cache_handler = params.CacheHandler();
+        DCHECK(cache_handler);
+        v8::ScriptCompiler::CachedData* cached_data =
+            V8CodeCache::CreateCachedData(cache_handler);
+        v8::ScriptCompiler::Source source(code, origin, cached_data);
+        script = v8::ScriptCompiler::CompileModule(
+            isolate, &source, compile_options, no_cache_reason);
+        if (cached_data->rejected) {
+          cache_handler->ClearCachedMetadata(
+              CachedMetadataHandler::kClearPersistentStorage);
+        } else if (InDiscardExperiment()) {
+          // Experimentally free code cache from memory after first use. See
+          // http://crbug.com/1045052.
+          cache_handler->ClearCachedMetadata(
+              CachedMetadataHandler::kDiscardLocally);
+        }
+        cache_result.consume_result = base::make_optional(
+            inspector_compile_script_event::V8CacheResult::ConsumeResult(
+                compile_options, cached_data->length, cached_data->rejected));
+        break;
+      }
     }
   }
 
   TRACE_EVENT_END1(kTraceEventCategoryGroup, "v8.compileModule", "data",
                    inspector_compile_script_event::Data(
-                       file_name, start_position, cache_result, false,
-                       ScriptStreamer::NotStreamingReason::kModuleScript));
-
+                       file_name, start_position, cache_result, streamer,
+                       params.NotStreamingReason()));
   return script;
 }
 
diff --git a/third_party/blink/renderer/core/inspector/inspector_trace_events.cc b/third_party/blink/renderer/core/inspector/inspector_trace_events.cc
index d518e6c..6116c07 100644
--- a/third_party/blink/renderer/core/inspector/inspector_trace_events.cc
+++ b/third_party/blink/renderer/core/inspector/inspector_trace_events.cc
@@ -433,6 +433,8 @@
       return "no data pipe received";
     case ScriptStreamer::NotStreamingReason::kDisabledByFeatureList:
       return "streaming disabled from the feature list";
+    case ScriptStreamer::NotStreamingReason::kNonJavascriptModule:
+      return "not a javascript module";
     case ScriptStreamer::NotStreamingReason::kLoadingCancelled:
       return "loading was cancelled";
     case ScriptStreamer::NotStreamingReason::kDidntTryToStartStreaming:
diff --git a/third_party/blink/renderer/core/loader/modulescript/document_module_script_fetcher.cc b/third_party/blink/renderer/core/loader/modulescript/document_module_script_fetcher.cc
index 90743c54..d8f71f8 100644
--- a/third_party/blink/renderer/core/loader/modulescript/document_module_script_fetcher.cc
+++ b/third_party/blink/renderer/core/loader/modulescript/document_module_script_fetcher.cc
@@ -28,9 +28,13 @@
   DCHECK(fetch_client_settings_object_fetcher);
   DCHECK(!client_);
   client_ = client;
-  // TODO(crbug.com/1061857): Enable streaming.
+  // Streaming can currently only be triggered from the main thread. This
+  // currently happens only for dynamic imports in worker modules.
+  ScriptResource::StreamingAllowed streaming_allowed =
+                        IsMainThread() ? ScriptResource::kAllowStreaming
+                                       : ScriptResource::kNoStreaming;
   ScriptResource::Fetch(fetch_params, fetch_client_settings_object_fetcher,
-                        this, ScriptResource::kNoStreaming);
+                        this, streaming_allowed);
 }
 
 void DocumentModuleScriptFetcher::NotifyFinished(Resource* resource) {
diff --git a/third_party/blink/renderer/core/loader/modulescript/module_script_creation_params.h b/third_party/blink/renderer/core/loader/modulescript/module_script_creation_params.h
index 35d4008..626eb17 100644
--- a/third_party/blink/renderer/core/loader/modulescript/module_script_creation_params.h
+++ b/third_party/blink/renderer/core/loader/modulescript/module_script_creation_params.h
@@ -110,6 +110,9 @@
   }
 
   ScriptStreamer* GetScriptStreamer() const { return script_streamer_; }
+  ScriptStreamer::NotStreamingReason NotStreamingReason() const {
+    return not_streaming_reason_;
+  }
 
  private:
   // Creates an isolated copy.
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations
index 90319094..802479a 100644
--- a/third_party/blink/web_tests/TestExpectations
+++ b/third_party/blink/web_tests/TestExpectations
@@ -5918,12 +5918,12 @@
 # Wpt importer sheriff 2020-12-23
 crbug.com/626703 external/wpt/cookies/samesite/multiple-samesite-attributes.https.html?legacy-samesite [ Failure ]
 crbug.com/626703 virtual/legacy-samesite/external/wpt/cookies/samesite/multiple-samesite-attributes.https.html [ Failure ]
-crbug.com/626703 external/wpt/html/semantics/forms/textfieldselection/select-event.html [ Failure ]
+crbug.com/626703 external/wpt/html/semantics/forms/textfieldselection/select-event.html [ Failure Timeout ]
 
 # Sheriff 2020-12-14
 crbug.com/1046784 http/tests/devtools/console/console-context-selector.js [ Pass Timeout ]
 
-#Sheriff 2020-12-22
+# Sheriff 2020-12-22
 crbug.com/1161244 [ Mac10.15 ] external/wpt/html/cross-origin-opener-policy/popup-coop-by-sw-from-coop.https.html [ Pass Timeout ]
 crbug.com/1161301 [ Mac10.15 ] external/wpt/webxr/xrSession_requestReferenceSpace_features.https.html [ Pass Timeout ]
 crbug.com/1161352 [ Mac10.14 ] virtual/controls-refresh-hc/fast/forms/color-scheme/search/search-appearance-basic.html [ Pass Timeout ]
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/import-css-module-basic.html b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/import-css-module-basic.html
index 1cb290d..4ca2bb70 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/import-css-module-basic.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/import-css-module-basic.html
@@ -19,6 +19,20 @@
         }, "A CSS Module should load");
 
         async_test(function (test) {
+            // This tests potential streaming compilation of modules in
+            // Chromium that is triggered only for large (32>KiB) files in older
+            // versions.
+            const iframe = document.createElement("iframe");
+            iframe.src = "resources/css-module-basic-large-iframe.html";
+            iframe.onload = test.step_func_done(function () {
+                assert_equals(getComputedStyle(iframe.contentDocument.querySelector('#test'))
+                    .backgroundColor, "rgb(255, 0, 0)",
+                    "CSS module import should succeed");
+            });
+            document.body.appendChild(iframe);
+        }, "A large CSS Module should load");
+
+        async_test(function (test) {
             const iframe = document.createElement("iframe");
             iframe.src = "resources/css-module-at-import-iframe.html";
             iframe.onload = test.step_func_done(function () {
@@ -41,4 +55,4 @@
             document.body.appendChild(iframe);
         }, "Malformed CSS should not load");
     </script>
-</body>
\ No newline at end of file
+</body>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/resources/basic-large.css b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/resources/basic-large.css
new file mode 100644
index 0000000..f5b0db5d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/resources/basic-large.css
@@ -0,0 +1,7 @@
+#test {
+    background-color:red;
+}
+
+#test:before {
+  content: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
+}
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/resources/css-module-basic-large-iframe.html b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/resources/css-module-basic-large-iframe.html
new file mode 100644
index 0000000..cc5b660
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/resources/css-module-basic-large-iframe.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<body>
+    <script>
+        window.onerror = function (errorMsg, url, lineNumber, column, errorObj)
+        {
+            document.load_error = errorObj.name;
+            return true;
+        };
+    </script>
+    <script type="module">
+        import v from "./basic-large.css";
+        document.adoptedStyleSheets = [v];
+    </script>
+
+    <div id="test">
+        I am a test div.
+    </div>
+</body>
diff --git a/third_party/blink/web_tests/http/tests/devtools/isolated-code-cache/same-origin-module-test-expected.txt b/third_party/blink/web_tests/http/tests/devtools/isolated-code-cache/same-origin-module-test-expected.txt
index 062587a..c007fa0 100644
--- a/third_party/blink/web_tests/http/tests/devtools/isolated-code-cache/same-origin-module-test-expected.txt
+++ b/third_party/blink/web_tests/http/tests/devtools/isolated-code-cache/same-origin-module-test-expected.txt
@@ -6,7 +6,7 @@
     data : {
         columnNumber : 1
         lineNumber : 1
-        notStreamedReason : "module script"
+        notStreamedReason : "script too small"
         streamed : <boolean>
         url : .../devtools/resources/v8-cache-script.cgi
     }
@@ -20,7 +20,7 @@
     data : {
         columnNumber : 1
         lineNumber : 1
-        notStreamedReason : "module script"
+        notStreamedReason : "already used streamed data"
         streamed : <boolean>
         url : .../devtools/resources/v8-cache-script.cgi
     }
@@ -52,7 +52,7 @@
         columnNumber : 1
         consumedCacheSize : <number>
         lineNumber : 1
-        notStreamedReason : "module script"
+        notStreamedReason : "already used streamed data"
         streamed : <boolean>
         url : .../devtools/resources/v8-cache-script.cgi
     }
@@ -66,7 +66,7 @@
     data : {
         columnNumber : 1
         lineNumber : 1
-        notStreamedReason : "module script"
+        notStreamedReason : "script too small"
         streamed : <boolean>
         url : .../devtools/resources/v8-cache-script.cgi
     }
@@ -83,7 +83,7 @@
         columnNumber : 1
         consumedCacheSize : <number>
         lineNumber : 1
-        notStreamedReason : "module script"
+        notStreamedReason : "already used streamed data"
         streamed : <boolean>
         url : .../devtools/resources/v8-cache-script.cgi
     }
@@ -100,7 +100,7 @@
         columnNumber : 1
         consumedCacheSize : <number>
         lineNumber : 1
-        notStreamedReason : "module script"
+        notStreamedReason : "script too small"
         streamed : <boolean>
         url : .../devtools/resources/v8-cache-script.cgi
     }
diff --git a/third_party/blink/web_tests/http/tests/devtools/tracing/timeline-script-module-expected.txt b/third_party/blink/web_tests/http/tests/devtools/tracing/timeline-script-module-expected.txt
index 7822c9f..559bd45 100644
--- a/third_party/blink/web_tests/http/tests/devtools/tracing/timeline-script-module-expected.txt
+++ b/third_party/blink/web_tests/http/tests/devtools/tracing/timeline-script-module-expected.txt
@@ -5,7 +5,7 @@
     data : {
         columnNumber : 1
         lineNumber : 1
-        notStreamedReason : "module script"
+        notStreamedReason : "already disabled streaming"
         streamed : <boolean>
         url : .../devtools/resources/inspected-page.html
     }
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index 00e45c7..8486c65 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -24118,7 +24118,7 @@
   <int value="421"
       label="ACCESSIBILITY_PRIVATE_ON_SELECT_TO_SPEAK_STATE_CHANGE_REQUESTED"/>
   <int value="422" label="INPUT_METHOD_PRIVATE_ON_FOCUS"/>
-  <int value="423" label="SYSTEM_POWER_SOURCE_ONPOWERCHANGED"/>
+  <int value="423" label="DELETED_SYSTEM_POWER_SOURCE_ONPOWERCHANGED"/>
   <int value="424" label="WEB_REQUEST_ON_ACTION_IGNORED"/>
   <int value="425" label="ARC_APPS_PRIVATE_ON_INSTALLED"/>
   <int value="426" label="FILE_MANAGER_PRIVATE_ON_CROSTINI_CHANGED"/>
@@ -25493,8 +25493,8 @@
   <int value="1256" label="USERSPRIVATE_GETCURRENTUSER"/>
   <int value="1257" label="WALLPAPERPRIVATE_GETSURPRISEMEIMAGE"/>
   <int value="1258" label="VIRTUALKEYBOARDPRIVATE_SETOCCLUDEDBOUNDS"/>
-  <int value="1259" label="SYSTEM_POWER_SOURCE_GETPOWERSOURCEINFO"/>
-  <int value="1260" label="SYSTEM_POWER_SOURCE_REQUESTSTATUSUPDATE"/>
+  <int value="1259" label="DELETED_SYSTEM_POWER_SOURCE_GETPOWERSOURCEINFO"/>
+  <int value="1260" label="DELETED_SYSTEM_POWER_SOURCE_REQUESTSTATUSUPDATE"/>
   <int value="1261" label="INPUTMETHODPRIVATE_GETSURROUNDINGTEXT"/>
   <int value="1262" label="USERSPRIVATE_GETLOGINSTATUS"/>
   <int value="1263" label="FILEMANAGERPRIVATEINTERNAL_INSTALLLINUXPACKAGE"/>
@@ -26372,7 +26372,7 @@
   <int value="211" label="kCecPrivate"/>
   <int value="212" label="kSafeBrowsingPrivate"/>
   <int value="213" label="kFileSystemRequestDownloads"/>
-  <int value="214" label="kSystemPowerSource"/>
+  <int value="214" label="kDeleted_SystemPowerSource"/>
   <int value="215" label="kArcAppsPrivate"/>
   <int value="216" label="kEnterpriseHardwarePlatform"/>
   <int value="217" label="kLoginScreenUi"/>
diff --git a/ui/accessibility/extensions/chromevoxclassic/chromevox/injected/api.js b/ui/accessibility/extensions/chromevoxclassic/chromevox/injected/api.js
index 3094760..9c05e4c 100644
--- a/ui/accessibility/extensions/chromevoxclassic/chromevox/injected/api.js
+++ b/ui/accessibility/extensions/chromevoxclassic/chromevox/injected/api.js
@@ -80,7 +80,9 @@
      }
 
      channel = new MessageChannel();
-     window.postMessage(PORT_SETUP_MSG, [channel.port2], '*');
+     window.postMessage(
+         PORT_SETUP_MSG, '*' /* target origin */,
+         [channel.port2] /* transfer */);
      channel.port1.onmessage = function(event) {
        if (event.data == DISCONNECT_MSG) {
          channel = null;
diff --git a/ui/accessibility/extensions/chromevoxclassic/chromevox/injected/mathjax.js b/ui/accessibility/extensions/chromevoxclassic/chromevox/injected/mathjax.js
index 1b92672..50c99fa 100644
--- a/ui/accessibility/extensions/chromevoxclassic/chromevox/injected/mathjax.js
+++ b/ui/accessibility/extensions/chromevoxclassic/chromevox/injected/mathjax.js
@@ -38,7 +38,9 @@
     channel_.port1.onmessage = function(evt) {
       cvox.MathJax.execMessage(evt.data);
     };
-    window.postMessage('cvox.MathJaxPortSetup', '*', [channel_.port2]);
+    window.postMessage(
+        'cvox.MathJaxPortSetup', '*' /* target origin */,
+        [channel_.port2] /* transfer */);
   };
 
 
diff --git a/ui/accessibility/extensions/chromevoxclassic/chromevox/injected/pdf_processor.js b/ui/accessibility/extensions/chromevoxclassic/chromevox/injected/pdf_processor.js
index 5b23294..b443fa13 100644
--- a/ui/accessibility/extensions/chromevoxclassic/chromevox/injected/pdf_processor.js
+++ b/ui/accessibility/extensions/chromevoxclassic/chromevox/injected/pdf_processor.js
@@ -73,7 +73,7 @@
 cvox.PdfProcessor.process = function() {
   cvox.PdfProcessor.pageCount = null;
   cvox.PdfProcessor.pageIndex = null;
-  window.postMessage({'type': 'getAccessibilityJSON'}, '*');
+  window.postMessage({'type': 'getAccessibilityJSON'}, '*' /* target origin */);
 };
 
 /**
diff --git a/ui/accessibility/extensions/chromevoxclassic/common/interframe.js b/ui/accessibility/extensions/chromevoxclassic/common/interframe.js
index 8d7b7fc..d13165e 100644
--- a/ui/accessibility/extensions/chromevoxclassic/common/interframe.js
+++ b/ui/accessibility/extensions/chromevoxclassic/common/interframe.js
@@ -132,7 +132,7 @@
 cvox.Interframe.sendMessageToWindow = function(message, window) {
   var encodedMessage = cvox.Interframe.IF_MSG_PREFIX +
       cvox.ChromeVoxJSON.stringify(message, null, null);
-  window.postMessage(encodedMessage, '*');
+  window.postMessage(encodedMessage, '*' /* target origin */);
 };
 
 /**
